正则表达式匹配 2 条路由的 Django NoReverseMatch 异常
Django NoReverseMatch Exception for regular expression matching 2 routes
url(r'^v1/(statistics|analytics)/stats_bar$', views.stats_bar, name='stats_bar')
reverse('stats_bar')
Throws:Reverse for 'stats_bar' with arguments '()' and keyword arguments '{}' not found。尝试了 1 种模式:['v1/(statistics|analytics)/stats_bar$']
有没有什么方法可以操纵 Django 尝试的模式或其他简单的方法来处理这个问题?
Django==1.6.9
https://docs.djangoproject.com/en/stable/ref/urlresolvers/#reverse
查看有关 args 的部分。
我认为 django 正在将 (statics|analytics)
解释为变量的模式。我建议如下:
定义2个不同的url到同一个视图:
url(r'^v1/statistics/stats_bar$', views.stats_bar, name='stats_bar_statistics')
url(r'^v1/analytics/stats_bar$', views.stats_bar, name='stats_bar_analytics')
reverse('status_bar_statistics') # usage
并且在 url 已使用的视图测试中:
if 'analytics' in request.path:
# do something
elif 'statistics' in request.path:
# do otherthing
你用参数定义一个url:
url(r'^v1/ (?P<type>(statistics|analytics))/stats_bar$', views.stats_bar, name='stats_bar')
reverse('status_bar', kwargs={'type': 'statistics'}) # usage
url(r'^v1/(statistics|analytics)/stats_bar$', views.stats_bar, name='stats_bar')
reverse('stats_bar')
Throws:Reverse for 'stats_bar' with arguments '()' and keyword arguments '{}' not found。尝试了 1 种模式:['v1/(statistics|analytics)/stats_bar$']
有没有什么方法可以操纵 Django 尝试的模式或其他简单的方法来处理这个问题?
Django==1.6.9
https://docs.djangoproject.com/en/stable/ref/urlresolvers/#reverse
查看有关 args 的部分。
我认为 django 正在将 (statics|analytics)
解释为变量的模式。我建议如下:
定义2个不同的url到同一个视图:
url(r'^v1/statistics/stats_bar$', views.stats_bar, name='stats_bar_statistics') url(r'^v1/analytics/stats_bar$', views.stats_bar, name='stats_bar_analytics') reverse('status_bar_statistics') # usage
并且在 url 已使用的视图测试中:
if 'analytics' in request.path: # do something elif 'statistics' in request.path: # do otherthing
你用参数定义一个url:
url(r'^v1/ (?P<type>(statistics|analytics))/stats_bar$', views.stats_bar, name='stats_bar') reverse('status_bar', kwargs={'type': 'statistics'}) # usage