Django URL复杂的模式和路径

时间:2017-09-29 20:41:57

标签: python django

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

urls.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'),

]

2 个答案:

答案 0 :(得分:2)

您需要向BRPOP正则表达式添加一个美元(行尾字符),以使其与r'^medicare/匹配,但不匹配/medicare/等其他网址。

medicare/medicarepcp/

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

答案 1 :(得分:0)

URL的顺序很重要,因为Django会对匹配请求的第一个URL模式做出反应。一个好习惯是把你所有的" sub"首先是网址,然后是该网页的最高级别,如果其他网站没有匹配则将其作为后备广告(即将您的' ^医疗保险/ $'最后一次)。