【问题标题】:App URL to project URL应用 URL 到项目 URL
【发布时间】:2013-03-01 08:43:05
【问题描述】:

我有一个 django 项目正在生产中,目前只包含一个应用程序。假设我的域是myproject.com,我的应用程序名为myapp。我希望索引为myproject.com/ 而不是myproject.com/myapp/

这就是我的myproject/urls.py 的样子:

urlpatterns = patterns('',
url(r'^myapp/', include('myapp.urls')),
...

还有myapp.urls.py:

urlpatterns = patterns('myapp.views',
url(r'^$', 'about'),
...

如何在 myproject.com 下提供该应用程序?还是您应该通过重定向来做某事,例如在你的.htaccess 中?

【问题讨论】:

    标签: django django-urls


    【解决方案1】:

    您必须将您的 urls.py 重新定义为此

    urlpatterns = patterns('',
        url(r'^$', include('myapp.urls')),
    ...
    

    这将捕获对“/”的所有调用。

    这将从“根”启用您的所有网址。 然后当然你必须写你的myapp.urls,这样它们在什么时候才有意义 放入网络浏览器。

    更新

    所以在大聊之后:这就是我认为你想要纯代码的东西

    在你的根目录urls.py

    url(r'', include('myapp.urls')),
    

    在您的 myapp.urls 中

    urlpatterns = patterns('myapp.views',
        url(r'^$', 'first_view'),
        url(r'^evilCellphones/$', 'another_view'),
    )
    

    这里基本上发生的事情是您将myapp.urls 包含在 no 命名空间,但由于 Django 仍然加载它,它将包含您新定义的 url。 从那里您可以重新定义所有网址并让它们遵循相同的名称 空间作为“我的项目”。

    This part of the docs are explains it really well

    【讨论】:

    • 我明白了......所以你认为最好使用重定向,例如在你的 .htaccess 中?
    • 这完全取决于您计划如何推进您的项目。如果您打算添加多个应用程序,那么也许可以,否则这很好。
    • 在我的 myapp.urls.py 中,所有不是索引的东西都应该像这样匹配? ^$/contact
    • 差不多,应该是这样的:(r'^contact/$', 'myapp.view.some_magical_pony_view')。您不希望在您的网址中使用双斜杠。不幸的是,我无法在 atm 上为您测试,但会在大约 30 分钟内验证:)
    • 我真的不明白这两个 url.py 文件是如何协同工作的。据我了解,一个是项目范围的,另一个定义您的应用程序的 url。所以(r'^contact/$'... 会找到联系人根目录下的所有内容。但如果联系人是html,这将不起作用,对吧?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 2012-11-19
    • 1970-01-01
    • 2019-12-22
    相关资源
    最近更新 更多