【问题标题】:how to pass multiple url parameters in django如何在django中传递多个url参数
【发布时间】:2016-02-20 12:05:58
【问题描述】:

我的 html 模板中有 2 个链接。第一个链接仅向 URL 传递 1 个参数,第二个链接传递 2 个参数。像这样:

<a href="/products/{{categ_name}}">{{categ_name}}</a>
<a href="/products/{{categ_name}}/{{subcateg_name}}">{{subcateg_name}}</a>

现在,当我单击带有 1 个参数的链接时,它可以正常工作。我在我的 django 视图中获得了参数值。
但是当我单击带有两个参数的链接时,我只获得第一个参数。我在第二个参数的值中得到 None。

我的 urls.py:

urlpatterns = patterns('',
            url(r'^products/(?P<categ_name>\w+)/', views.products, name='products_category'),
            url(r'^products/(?P<categ_name>\w+)/(?P<subcateg_name>\w+)/', views.products, name='products_subcategory'),
            url(r'^logout/',views.logoutView, name='logout'),)

我的意见.py:

def products(request, categ_name=None, subcateg_name=None):
    print categ_name, subcateg_name
    ...

如何获取第二个参数的值?

【问题讨论】:

    标签: python django


    【解决方案1】:

    将您的网址更改为:

    urlpatterns = patterns('',
                url(r'^products/(?P<categ_name>\w+)/$', views.products, name='products_category'),
                url(r'^products/(?P<categ_name>\w+)/(?P<subcateg_name>\w+)/$', views.products, name='products_subcategory'),
                url(r'^logout/',views.logoutView, name='logout'),)
    

    然后,您可以避免您的 2 参数 url 与第一个 1 参数模式匹配。 $ 特殊字符表示字符串的结尾。

    【讨论】:

    • 旁注:也可以简单地重新排序 URL 模式,以便首先列出更具体的模式。 Django 在 first-match-wins 基础上处理 URL。不过,显式添加锚点可能更简洁。
    猜你喜欢
    • 2021-09-12
    • 2020-09-06
    • 2021-03-30
    • 2013-11-21
    • 2012-06-12
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多