url(r'^v1/(statistics|analytics)/stats_bar$', views.stats_bar, name='stats_bar')

reverse('stats_bar')

抛出 : 'stats_bar' 的反向参数 '()' 和关键字参数 '{}' 未找到。尝试了 1 个模式:['v1/(statistics|analytics)/stats_bar$']

有什么方法可以操纵 Django 尝试的模式或其他简单的方法来处理这个问题吗?

姜戈==1.6.9

最佳答案

我认为 django 将 (statics|analytics) 解释为变量的模式。我建议如下:

  • 为同一个 View 定义了 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
    

    并在 View 测试中使用了哪个 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
    
  • 关于python - 正则表达式匹配2条路由的Django NoReverseMatch异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34447198/

    10-12 05:39