django命名url没有选择变量

时间:2013-06-05 19:35:22

标签: python django django-urls

我有以下网址格式 -

url(r'^detail/(?P<var>[\w]+)/(?P<var_slug>[\w-])/$', 'player_detail', name='player_detail'),

在我看来,我有以下内容 -

model_dict = {"player":PlayerProfile, "event":PlayerEvent, "need":PlayerNeed}
def player_list(request, var=None, var_slug=None):
    '''
    displays the list of vars
    '''
    objs = model_dict.get(var).objects.filter(slug=var_slug).order_by('-creation_time')[:20]
    template_name = "list_"+str(var)+"s.html"
    return render(request, template_name, {"objs":objs})

在我的模板中,我最终执行以下操作 -

<a href="{% url 'player_detail' var='baseball' slug='obj.slug'  %}">details of Player</a>

我得到的错误是 -

Reverse for 'player_detail' with arguments '()' and keyword arguments '{u'var': u'baseball', u'slug': u'obj.slug'}' not found.

我错过了什么?

另外,根据参数中的变量动态选择模型并动态生成模板名称是一种好方法吗?

1 个答案:

答案 0 :(得分:3)

slug='obj.slug'应为slug=obj.slug

您的正则表达式与.

不匹配

你也可能希望[\w-]+就像你的其他正则表达式一样..一个或多个[\ w或 - ]