Django:无法解析 URL 模式:始终显示索引页面内容
Django : Cannot resolve the URLs pattern : Always Index page content is displayed
我正在学习 Django。我构建了一个应用程序,我在其中设置了 URL 模式,但在所有情况下它都显示索引页面的数据。
appTwo urls.py 文件:
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^$', views.users, name='users'),
url(r'^$', views.help, name='help'),
]
我的项目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,浏览器只显示索引文件的数据。
有没有我做错的正则表达式?
当 django 到达此处(在您的应用程序 url 中)并解析 urls 时,看到所有三个 urls 都有空的正则表达式作为第一个参数(因此第一个将被选中),当你看到它的索引时,你总是显示索引页面。您需要区分 urls。像这样。
urlpatterns = [
url(r'^users/$', views.users, name='users'),
url(r'^help/$', views.help, name='help'),
url(r'^$', views.index, name='index'),
]
我认为您也不能在其他 url 顶部使用空正则表达式编写 url 索引,否则它将始终被选中。
您 urlpatterns
的设置有误。首先,在您项目的 urls.py
文件中,您说如果请求发送到 /users
或 /help
,那么 Django 应该查看您的 appTwo.urls
。当 Django 到达那里时,它发现 urlpatters
已设置,因此任何上述 url 之后为空的所有内容都必须由 views.index
、views.users
和 views.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'),
]
我正在学习 Django。我构建了一个应用程序,我在其中设置了 URL 模式,但在所有情况下它都显示索引页面的数据。
appTwo urls.py 文件:
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^$', views.users, name='users'),
url(r'^$', views.help, name='help'),
]
我的项目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,浏览器只显示索引文件的数据。
有没有我做错的正则表达式?
当 django 到达此处(在您的应用程序 url 中)并解析 urls 时,看到所有三个 urls 都有空的正则表达式作为第一个参数(因此第一个将被选中),当你看到它的索引时,你总是显示索引页面。您需要区分 urls。像这样。
urlpatterns = [
url(r'^users/$', views.users, name='users'),
url(r'^help/$', views.help, name='help'),
url(r'^$', views.index, name='index'),
]
我认为您也不能在其他 url 顶部使用空正则表达式编写 url 索引,否则它将始终被选中。
您 urlpatterns
的设置有误。首先,在您项目的 urls.py
文件中,您说如果请求发送到 /users
或 /help
,那么 Django 应该查看您的 appTwo.urls
。当 Django 到达那里时,它发现 urlpatters
已设置,因此任何上述 url 之后为空的所有内容都必须由 views.index
、views.users
和 views.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'),
]