我有一个名为 mylibrary 的应用程序,用户可以在其中添加书籍。所以我正在注册并登录用户并将他们重定向到索引页面。这是它的样子:
您可以看到下拉菜单中有一个选项,我的个人资料。这是从 base.html 生成的。这是我使用的代码片段:
<ul class="dropdown-menu" aria-labelledby="dropdownMenuDivider">
<li><a>Signed in as <br/>{{ user.username }}</a></li>
<li><a href="{% url 'mylibrary:edit_user' user.id %}">My profile</a></li>
<li><a href="{% url 'mylibrary:index' %}">My Library</a></li>
<li><a href="#">Help</a></li>
<li role="separator" class="divider"></li>
<li><a href="{% url 'mylibrary:logout_user' %}">Sign out</a></li>
</ul>
这部分生成下拉菜单。所以在这部分:
<li><a href="{% url 'mylibrary:edit_user' user.id %}">My profile</a></li>
我正在使用用户 ID 来确定当前登录的用户并尝试更新他的个人资料。 这是在 View 类中编辑配置文件:
@login_required
def edit_user(request, pk):
user = User.objects.get(pk=pk)
user_form = UserProfileForm(instance=user)
ProfileInlineFormset = inlineformset_factory(User, UserProfile,
fields=('address', 'sex', 'phone', 'city', 'bio'))
formset = ProfileInlineFormset(instance=user)
if request.user.is_authenticated() and request.user.id == user.id:
if request.method == "POST":
user_form = UserProfileForm(request.POST, request.FILES, instance=user)
formset = ProfileInlineFormset(request.POST, request.FILES, instance=user)
if user_form.is_valid():
created_user = user_form.save(commit=False)
formset = ProfileInlineFormset(request.POST, request.FILES, instance=created_user)
if formset.is_valid():
created_user.save()
formset.save()
return HttpResponseRedirect('/mylibrary/edit_user/')
return render(request, "mylibrary/account_update.html", {
"noodle": pk,
"noodle_form": user_form,
"formset": formset,
})
else:
raise PermissionDenied
这是我的 edit_user 的 URL:
url(r'^(?P<pk>[\-\w]+)/accounts/update/$', views.edit_user, name='account_update'),
所以一旦应用程序启动,它应该重定向到索引页面或 mylibrary 主页。但是当我添加
<li><a href="{% url 'mylibrary:edit_user' user.id %}">My profile</a></li>
这部分是为了让用户现在可以编辑他们的个人资料,它会生成上述错误。 如何解决这个问题?
最佳答案
您的 URL 模式中有 name='account_update'
,但正试图使用 'mylibrary:edit_user'
反转它。
您需要更改其中一个以匹配另一个,例如:
url(r'^(?P<pk>[\-\w]+)/accounts/update/$', views.edit_user, name='edit_user'),
关于django - 反转 'edit_user',参数 '(2L,)' 和关键字参数 '{}' 未找到。 0 种模式已尝试 : [],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44137173/