【问题标题】:Django : Cannot resolve the URLs pattern : Always Index page content is displayedDjango:无法解析 URL 模式:始终显示索引页面内容
【发布时间】:2020-06-17 19:20:01
【问题描述】:

我正在学习 Django。我构建了一个应用程序,我在其中设置 URL 模式,但在所有情况下它都显示索引页面的数据。

appTwo urls.py 文件:

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^$', views.users, name='users'),
    url(r'^$', views.help, name='help'),
]

MyProject urls.py 文件:

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url('admin/', admin.site.urls),
    url(r'^users/', include('appTwo.urls')),
    url(r'^help/', include('appTwo.urls')),
]

如果我调用 /users 或 /help,浏览器只显示索引文件的数据。

我做错了正则表达式吗?

【问题讨论】:

  • appTwo.urls 是否与MyApp/urls.py 相同?另外,您使用的是哪个 Django 版本?
  • 是的,它们是一样的!!

标签: python django django-urls


【解决方案1】:

您以错误的方式设置了您的urlpatterns。首先,在您项目的urls.py 文件中,您是说如果将请求发送到/users/help,那么Django 应该查看您的appTwo.urls。当 Django 到达那里时,它发现 urlpatters 已设置,因此在上述任何 url 之后的所有内容都必须由 views.indexviews.usersviews.help 处理。但是由于views.index 是列表中的第一个,因此所有请求最终都由该视图处理。

顺便说一句,如果您使用 Django >= 2.0,则不再需要使用 url() 函数,而是使用 path() 函数,您可以将路径声明为简单字符串而不是正则表达式.

你应该有如下的东西:

MyProject/urls.py

from django.urls import path


urlpatterns = [
    path('', include('appTwo.urls')),
    path('admin/', admin.site.urls)
]

MyApp/urls.py

from django.urls import path

urlpatterns = [
    path('', views.index, name='index'),
    path('users/', views.users, name='users'),
    path('help/', views.help, name='help'),
]

【讨论】:

  • 谢谢!!通过路径,我能够解决问题!
【解决方案2】:

当 django 在解析 url 时到达此处(在您的应用程序 url 中),看到所有三个 url 都有空的正则表达式作为第一个参数(所以第一个将被选择),当你看到它的索引时,你总是显示索引页面.您需要区分网址。像这样。

urlpatterns = [
                      url(r'^users/$', views.users, name='users'),
                      url(r'^help/$', views.help, name='help'),
                      url(r'^$', views.index, name='index'),
                   ]

我认为您也不能在其他 url 顶部使用空正则表达式编写 url 索引,否则它将始终被选中。

【讨论】:

    猜你喜欢
    • 2014-01-03
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 2012-08-08
    • 2015-12-21
    • 1970-01-01
    相关资源
    最近更新 更多