Django:urls.py中的多变量不起作用

时间:2017-04-07 10:34:53

标签: python django

我试图在模板中构建一个包含两个变量的URL,但我只是得到了相同的错误消息。 我对Django很新,所以我需要你的帮助:)

Exception Type: NoReverseMatch
Exception Value: Reverse for 'skill_update' with arguments '()' and keyword
arguments '{u'instancepk': 1, u'skillpk': 15}' not found. 1 pattern(s) 
tried: [u'persomaker/skill/update/(?P<skillpk>[0-9]+)$/(?P<instancepk>[0-9]+)$']

模板:

{% url 'persomaker:skill_update' skillpk=item.pk instancepk=instance.pk %}

view.py:

def skill_update(request,skillpk,instancepk):
    form = SkillCreateForm(request.POST)
    user = User.objects.get (id = request.user.id)
    instance = Character.objects.get (id = instancepk)
    if form.is_valid():
        form.save()
        return redirect('persomaker:skill_list', instance.id)
    else:
        skill = Skill.objects.get(id=pk)
        form = SkillCreateForm(initial={'character':instance})
        form.fields['skill'].widget = HiddenInput()
        form.fields['level'].queryset = range(0,7)
        form.fields['character'].widget = HiddenInput()
    return render(request, 'character/create_skill.html',
    {'instance':instance,
    'form': form,})

url.py:

url(r'^skill/update/(?P<skillpk>[0-9]+)$/(?P<instancepk>[0-9]+)$',
views.skill_update, name='skill_update'),

2 个答案:

答案 0 :(得分:5)

你的模式正则表达式中间有一个$。那是终结角色;什么都不会匹​​配。删除中间的那个。

答案 1 :(得分:1)

您在URL配置中有2 $。这不是一个有效的正则表达式,因为它假定换行符。