Django处理可选的url参数

时间:2017-08-17 10:30:11

标签: python css django templates url

我希望url有可选的url参数。主要网址是:

queue<std::string> lines = doWork();
std::sort(std::begin(lines), std::end(lines));

但是在主题id之后我希望能够添加始终为数字的可选参数:

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

我甚至不确定是否正确,因为我不知道如何设置参数的数字。因此,在传递参数之后,我想要(模板?)或者视图来读取数字(这是模型的ID号)并将css类添加到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"), 到该模型。 我将如何实现这一点以及如何在视图或模板中处理它,无论哪个地方更有意义?

1 个答案:

答案 0 :(得分:1)

我认为你可以只有两个指向相同视图的网址,一个带有可选参数,另一个没有:

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
        }
    )

然后您可以像传入上下文中的任何其他变量一样获取模板中的参数。

相关问题