Django(v2.2(
我试图实现一个由三个完全匹配的all
、gs
和webservice
组成的路由,以便在页面上的表中进行筛选。
path(r'^(?P<mode>all|gs|webservice)$', get_orders, name='dash.orders_mode'),
path('(?P<mode>/^all$|^gs$|^webservice)/$', get_orders, name='dash.orders_mode'),
两种方式似乎都不起作用
这是因为路线上也有ID。
编辑:
这就是问题的解决方案(没有NoReverseMatch at /dash/orders/all
(:
re_path('(?P<mode>(all|gds|ws))', get_orders, name='dash.orders_mode'),
我会避免将业务逻辑放入您的url中。
path('<mode>', get_orders, name='dash.orders_mode'),
然后在你的看法
from django.http import Http404
def get_orders(request, mode):
if mode not in ['all', 'gs', 'webservice']:
raise Http404
为了使用正则表达式,您应该使用re_path(..)
[Django-doc],path(..)
[Django-dc]是一个使用path转换器:的函数
re_path(r'^(?P<mode>all|gs|webservice)$', get_orders, name='dash.orders_mode'),
话虽如此,这里最好只创建三条路径,并使用kwargs=…
参数向视图传递额外的数据。这样你就可以让它更容易阅读正在发生的事情。