【问题标题】:Django only matches urls with an app prefix/identifierDjango 只匹配带有应用前缀/标识符的 url
【发布时间】:2015-03-18 05:45:56
【问题描述】:

我在使用 django 的 URL 系统时遇到了问题。我正在使用 Django 3。我的项目的“urls.py”中有以下内容

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

这在项目中的 django 应用程序的 'urls.py' 中,称为 'siteadmin':

urlpatterns = patterns('',
    url(r'^$', views.home, name='home'),
    url(r'^register/$', views.register, name='register'),
    url(r'^login/$', views.user_login, name='login'),

    #...trimmed
)

使用此设置,会发生以下情况:

  1. http://localhost/ => 完美运行,呈现“主页”视图
  2. http://localhost/register/ => 休息。 (给出 404 和 django 的标准“当前 URL,注册,与这些都不匹配。”)

但是,当我将项目的“urls.py”更改为包含以下内容时:

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

并在 1. 和 2. 中包含 /app/,这两个 url 都可以正常工作。也就是说:

  1. localhost/app/ => 完美运行
  2. localhost/app/register => 完美运行。

我错过了什么?为什么 #2 在第一种情况下会中断,而在第二种情况下不会?

【问题讨论】:

    标签: django url


    【解决方案1】:

    从项目urls.py的正则表达式中删除美元符号:

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

    【讨论】:

    • $ 是“字符串结尾”符号,因此 r'^$' 仅匹配空字符串。
    猜你喜欢
    • 2016-04-16
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多