2017-08-17 165 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