使URL接受参数为可选。非捕获

时间:2019-08-13 13:24:13

标签: python regex django django-views django-urls

我想让我的url仅在给定时接受可选参数。我无法将参数设置为可选/不捕获。


re_path(r'^users/(?:(?P<sort_by>\d+)/)?$', views.UserListView.as_view(), name='user_list'),

我希望此URL仅在提供给视图时才接受slug字段。我怎样才能做到这一点? 显示错误

Reverse for 'user_list' with keyword arguments '{'sort_by': 'username'}' not found. 1 pattern(s) tried: ['admin/users/(?:(?P<sort_by>\\d+)/)?$']

当我通过sort_by ='username'

2 个答案:

答案 0 :(得分:2)

您可以将网址保留为:

re_path(r'^users/$', views.UserListView.as_view(), name='user_list'),

然后在您的模板中使用

   <a href="{% url 'user_list' %}?sort_by=username">Sort</a>

答案 1 :(得分:0)

我将创建2个URL:

path('users/<str:sort_by>', views.UserListView.as_view(), name='user_list_by_user'),
path('users', views.UserListView.as_view(), {'sort_by': 'default_sort_you_use'}, name='user_list'),

然后,您可以调用适当的URL,并且视图中始终具有sort_by值。