2017-08-17 163 views
0

我想讓url有可選的url參數。主要網址:Django處理可選的url參數

url(r'^(?P<letnik_id>[1-4])/(?P<classes_id>[A-G])/(?P<subject_id>[\w\-]+)$', views.subject, name="subject_id"), 

但受制於ID後,我希望能夠添加可選參數,它始終是一個數字:

url(r'^(?P<letnik_id>[1-4])/(?P<classes_id>[A-G])/(?P<subject_id>[\w\-]+)/(?P<digit>\d+)/$'', views.subject, name="subject_id_optional"), 

林甚至不知道正確的做了,因爲我不知道如何設置參數號碼。所以參數通過後,我想(模板?)或可能查看讀取數字(這是模型的ID號),並添加css類.highlited-model {background-color: red;}到該模型。 我會如何實現這一點,我應該如何處理它的意見或模板,無論它更有意義?

回答

1

我想你可以有兩個URL指向相同的觀點,一個與你的可選參數,一個沒有:

urls = [ 
    url(r'^(?P<letnik_id>[1-4])/(?P<classes_id>[A-G])/(?P<subject_id>[\w\-]+)/(?P<digit>\d+)/$', views.subject, name="subject_id_optional"), 
    url(r'^(?P<letnik_id>[1-4])/(?P<classes_id>[A-G])/(?P<subject_id>[\w\-]+)$', views.subject, name="subject_id"), 

] 

def subject(request, optional_parameter=''): 

    return render(
     request, 
     "template.html", 
     { 
      "optional_parameter": optional_parameter 
     } 
    ) 

然後,你可以就像任何其他變量得到參數模板傳入上下文。

+0

謝謝!你能告訴我爲什麼這條線需要? 「optional_parameter =''」 – BaltimoreGG