2017-09-29 28 views
0

我想生成嵌套的url路徑。到目前爲止,我只能生成1個級別的網址。當我嘗試二級網址時,它不再被調用,它仍然只顯示一級網址,儘管瀏覽器上的地址欄確實指向了二級網址。這是可能的還是我需要創建一個新的應用程序?Django的URL複雜的模式和路徑

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

你需要一美元(行結束字符)添加到r'^medicare/正則表達式,以便它匹配/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將始終匹配前兩個網址格式,因此您需要將第三個和第四個網址格式更改爲其他內容。

0

URL的順序很重要,因爲Django會對匹配請求的第一個URL模式做出反應。一個好習慣是先把所有的「子」網址放在第一位,然後再放在該部分的最上層,所以如果沒有其他人匹配(即把'^醫療保險/美元'放在最後),它就可以作爲後備。