NoReverseMatch反向'profile_user',找不到参数'()'和关键字参数'{}'

时间:2016-09-13 03:29:55

标签: python django

Views.py

@login_required

def profile_edit(request):

    profile, created = UserProfile.objects.get_or_create(user=request.user)
    form = UserProfileForm(request.POST or None, request.FILES or None, instance=profile)
    if form.is_valid():
        instance = form.save(commit=False)
        instance.user = request.user
        instance.save()
        return redirect('profile_user')

    context = {
        "title": 'Edit Profile',
        "form":form,
    }
    return render(request, 'profiles/userprofile_form.html', context)

主网址没有给出名称空间,个人资料网址如下所示。

url(r'^profile/(?P<username>[\w.@+-]+)$', profile_view, name='profile_user'),

有人可以帮忙解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

您的网址需要1个用户名参数。但是在reverse()中你没有传递任何参数。因此错误。将反向呼叫更改为

return redirect('profile_user', args=(instance.user.username,))

答案 1 :(得分:0)

您的网址需要命名参数username。您必须将其作为关键字参数提供给redirect()。例如:

redirect('view-name', username='joe')