【问题标题】:Django handle optional url parameterDjango 处理可选的 url 参数
【发布时间】:2018-01-25 17:26:33
【问题描述】:

我希望 url 有可选的 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;} 添加到该模型。 我将如何实现这一点,我应该如何在视图或模板中处理它,无论在哪里更有意义?

【问题讨论】:

    标签: python css django templates url


    【解决方案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
            }
        )
    

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

    【讨论】:

    • 谢谢!你能解释一下为什么需要这条线吗? “可选参数=''”
    猜你喜欢
    • 1970-01-01
    • 2012-12-30
    • 2013-08-31
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 2017-04-10
    相关资源
    最近更新 更多