簡體   English   中英

如何通過路徑()function傳遞url中的可選參數?

[英]How to pass optional parameters in url, via path () function?

我對使用path()而不是url()在 Django 中通過 url 傳遞可選參數感到困惑。 我發現我應該使用kwargs ,所以我將它添加到路徑:

path('all/<str:category>/<int:page_num>/', views.show_all_objects, name="show-all-objects"),

path('all/<str:category>/<int:page_num>/', views.show_all_objects, kwargs={'city': None}, name="show-all-objects"),

好的,但是現在如何從模板傳遞附加參數,我嘗試了:

<a href="{% url 'show-all-objects' category='restaurants' page_num=1 city=1 %}"

NoReverseMatch at /常見錯誤

所以我將它添加到 url 中:

path('all/<str:category>/<int:page_num>/<int:city>/', views.show_all_objects, kwargs={'city': None}, name="show-all-objects"),

但是錯誤是一樣的,我很確定,這不是正確的方法,但是我找不到有關通過path()傳遞可選參數的信息,所有信息都與url()可能嗎?

我有一個解決方案/解決方法。

你需要做的是,在urls.py中定義N個不同的路徑配置,其中N可選參數的個數

#urls.py
urlpatterns = [
                  path('foo/<param_1>/<param_2>/', sample_view, name='view-with-optional-params'),
                  path('foo/<param_1>/', sample_view, name='view-with-optional-params'),
                  path('foo/', sample_view, name='view-with-optional-params'),

              ]
#views.py
from django.http.response import HttpResponse


def sample_view(request, param_1=None, param_2=None):
    return HttpResponse("got response, param_1 is {} and param_2 is {}".format(param_1, param_2))

# template.html
<body>
<a href= {% url 'view-with-optional-params'  param_1='foo' param_2=123 %}>two parameters</a><br>
<a href= {% url 'view-with-optional-params'  param_1='foo' %}>one parameter</a><br>
<a href= {% url 'view-with-optional-params' %}>without parameter</a><br>
</body>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM