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

Making URL to accept parameters as optional. Non Capturing

我想让我的 url 仅在给定时接受可选参数。我无法使参数 optional/non-capturing.


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'

您可以将 url 保留为:

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

然后在您的模板中使用

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

我会创建 2 URLs:

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 值。