django - 反转 'edit_user',参数 '(2L,)' 和关键字参数 '{}' 未找到。 0 种模式已尝试 : []

标签 django

我有一个名为 mylibrary 的应用程序,用户可以在其中添加书籍。所以我正在注册并登录用户并将他们重定向到索引页面。这是它的样子:

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/

相关文章:

python - 清理难看的所见即所得 HTML 代码? Python 或 *nix 实用程序

python - 自定义 django 管理模板不起作用

python - MySQL:如果不重新打开 shell,Django .create 后跟 .get 将无法工作

python - Django allauth 没有检测到 user.is_authenticated

Django:识别提供重复内容的网址并设置规范链接

Django 数据分片

django - Django 模板中的循环 : how to control the loop iterator?

python - 以 django 形式强制

python - 为什么列的默认值不适用于 django

python - 在celery.py中导入Django App函数