Django URL正则表达式之间的各种精确字符串匹配


Django(v2.2(

我试图实现一个由三个完全匹配的allgswebservice组成的路由,以便在页面上的表中进行筛选。

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=…参数向视图传递额外的数据。这样你就可以让它更容易阅读正在发生的事情。

相关内容

  • 没有找到相关文章

最新更新