Python Django URL复杂的模式和路径

Python Django URL复杂的模式和路径,python,django,Python,Django,我正在尝试生成嵌套的url路径。到目前为止,我只能生成1级URL。当我尝试第二级url时,它不再被调用,它仍然只显示第一级url,尽管浏览器上的地址栏确实指向第二级url。这是可能的还是我需要创建一个新的应用程序 url.py from django.conf.urls import url, include from django.views.generic import ListView, DetailView, TemplateView from dashboard.models impo

我正在尝试生成嵌套的url路径。到目前为止,我只能生成1级URL。当我尝试第二级url时,它不再被调用,它仍然只显示第一级url,尽管浏览器上的地址栏确实指向第二级url。这是可能的还是我需要创建一个新的应用程序

url.py

from django.conf.urls import url, include
from django.views.generic import ListView, DetailView, TemplateView
from dashboard.models import IPARate,PCPRate
from dashboard import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^medicare/', ListView.as_view(queryset=IPARate.objects.all().order_by("id"), template_name='dashboard/medicare.html')),
    url(r'^medicare/medicarepcp/$', ListView.as_view(queryset=PCPRate.objects.all().order_by("id"), template_name='dashboard/medicarepcp.html')),
    url(r'^medicare/', views.medicaid, name='medicare'),
    url(r'^medicare/medicarepcp/$', views.medicarepcp, name='medicarepcp'),

]
您需要在
r'^medicare/
regex中添加一个美元(行尾字符),以便它与
/medicare/
匹配,但与其他URL(如
medicare/medicarepcp/
)不匹配

url(r'^medicare/$', ListView.as_view(queryset=IPARate.objects.all().order_by("id"), template_name='dashboard/medicare.html')),
url(r'^medicare/medicarepcp/$', ListView.as_view(queryset=PCPRate.objects.all().order_by("id"), template_name='dashboard/medicarepcp.html')),
第三个和第四个正则表达式分别与第一个和第二个相同。Django将始终匹配前两个URL模式,因此您需要将第三个和第四个URL模式更改为其他模式

您需要在
r'^medicare/
regex中添加一个美元(行尾字符),以便它与
/medicare/
匹配,但与其他URL(如
medicare/medicarepcp/
)不匹配

url(r'^medicare/$', ListView.as_view(queryset=IPARate.objects.all().order_by("id"), template_name='dashboard/medicare.html')),
url(r'^medicare/medicarepcp/$', ListView.as_view(queryset=PCPRate.objects.all().order_by("id"), template_name='dashboard/medicarepcp.html')),

第三个和第四个正则表达式分别与第一个和第二个相同。Django将始终匹配前两个URL模式,因此您需要将第三个和第四个URL模式更改为其他模式

URL的顺序很重要,因为Django将对与请求匹配的第一个URL模式作出反应。一个好习惯是将所有的“子”URL放在第一位,然后将该部分的顶层放在最后,这样,如果没有其他匹配的URL(即,将您的“^medicare/$”放在最后),它就可以作为一种后援。URL的顺序很重要,因为Django将对匹配请求的第一个URL模式做出反应。一个好习惯是将所有的“子”URL放在第一位,然后将该部分的顶层放在最后,这样,如果没有其他匹配的URL(即将您的“^medicare/$”放在最后),它就可以作为一个后备