python - django 一个app做两个网站
高洛峰
高洛峰 2017-04-18 10:01:04
[Python讨论组]
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(4)
PHP中文网

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,貌似不太可以,或许我不知道。还请高人指点!

高洛峰

推荐这个django插件,可以实现多个子域名,https://github.com/jazzband/d...

高洛峰

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目录。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号