我对在 Django 中通过 url 传递可选参数path()
而不是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()
Is it possible ?
我有一个解决方案/解决方法。
你需要做的是,在 中定义N
不同的路径配置urls.py
,其中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>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句