django 一个app做两个网站

我用django创建了一个项目,然后建了一个cms的app,然后用www.xxx111.com访问这个网站。现在,我能不能在现有的项目和app上,给这个cms的app改套模型、视图和模板,让后指定www.xxx222.com访问这个新网站?

阅读 6.1k
4 个回答

django一个项目可以创建多个APP。然后在项目的urls.py加入每个app的路由信息,譬如下面这样

urlpatterns = [
    url(r'^cms/', include(cms.urls)),
    url(r'^web/', include('web.urls')),
    url(r'^other/', include('other.urls'))
]

然后通过www.xxx111.com/cms,www.xxx111.com/web, www.xxx111.com/other 就可以访问相应的app。
至于你说的通过新的域名访问新的app,貌似不太可以,或许我不知道。还请高人指点!

settings.py里面
ALLOWED_HOSTS = ['127.0.0.1', "www.xxx111.com", "xxx111.com", "www.xxx222.com", "xxx222.com"]
DNS里面让xxx111.com和xxx222.com指向同一个服务器即可

是否可以这样设置?

nginx

upstream django {
    ...
}

server {
    server_name ~^(?<app>.+).example.com$;
    ...
    proxy_pass http://django/$app/;
}

django

main url
urlpatterns = [
    url(r'^$', include(cms.urls)),
]
cms.urls
from . import views
urlpatterns = [
    url(r'(?P<app_name>\S+)\.example.com/', views.AboutView.as_view()),
]
cms.views
class AboutView(TemplateView):
    template_name = "about.html"

    def get_template_names(self):
        return [self.kwargs["app_name"] + "/" + self.template_name]
        

然后你可以在templates目录添加app目录。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题