【问题标题】:Django URL Config For Dev and Prod用于开发和生产的 Django URL 配置
【发布时间】:2016-06-04 03:51:39
【问题描述】:

我的 django 应用程序的 url 为我的开发机器设置如下:

urls.py:

urlpatterns = [

url(r'^$', home, name='home'),
url(r'^signin$', signin, name='signin'),
url(r'^signout$', signout, name='signout'),
url(r'^advisor/', include('apps.advisor.urls', namespace='advisor')),

]

在使用 Django 的内置服务器(例如 http://127.0.0.1:8000)开发应用程序时,此设置可以正常工作。我必须将应用程序部署到机器上,并且 Django 应用程序通过以下 url 公开:

http://ip地址/appname/

我想配置我的 urls.py 文件,以便 url 中的正则表达式测试以查看 url 请求是否以“appname”或“”(空字符串)开头。这种方法意味着我不必创建 urls.py 文件(开发和生产版本)。感谢您的帮助!

【问题讨论】:

    标签: python django


    【解决方案1】:

    您根本不必这样做。当您的应用程序通过 WSGI 部署时,服务器应该传递 SCRIPT_NAME 参数,该参数标识了它的挂载路径。只要您在整个应用程序中始终使用{% url %}reverse() 而不是硬编码链接,一切都会正常工作。

    【讨论】:

    • 我确实使用命名 url 和反向 (reverse_lazy) 但是,当应用程序部署时,url 的开头从 127.0.0.0.1:8000 变为 123.245.1/app 在这种情况下,url 的开头不再匹配.感谢您的帮助。
    • 那么你的部署有问题。请提供您如何部署的详细信息,并显示您的服务器配置文件(在问题中)。
    • 我的反应很慢。我的 django 应用程序配置正确。我以前没有在 http 服务器配置方面做过很多工作。这通常由我们的系统管理员处理。我所学到的是,我必须弄清楚 nginx 重写设置,以便将 ip_address/folder 传递给 ip_address:9000 并将适当的 url 传递回客户端。
    • 我想我已经弄清楚了真正的问题。我们的系统管理员有一个 url company.com/app,面向公众。他们使用 apache http 服务器。系统管理员有company.com/app 指向internal_ip_address:8080。我有 nginx 坐在 internal_ip:address 上监听 8080。我试图让 nginx 接受进入internal_ip_address 的请求,将请求路由到localhost:9000 这是一个 django 应用程序。一旦 django 完成请求,生成的页面将使用适当的面向公众的 url 呈现(例如 company.com/app ......)感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 2017-07-27
    • 2022-01-14
    • 2018-08-20
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    相关资源
    最近更新 更多