【问题标题】:Page not found http://127.0.0.1:8000/manageAccount/a/delete找不到页面 http://127.0.0.1:8000/manageAccount/a/delete
【发布时间】:2020-10-25 02:05:18
【问题描述】:

我不知道为什么我会得到这个页面,因为我认为一切正常。我无法确定为什么浏览器会出现此错误,但下面的 url 不起作用,因为用户对象没有得到,因为它在登录页面上重定向,但我正在这个 url http://127.0.0.1:8000/user_homeview/a/delete 它的工作成功但 user_homeview 该模板在登录后显示意味着主页我不知道我该怎么办请告诉我:

找不到页面http://127.0.0.1:8000/manageAccount/a/delete

这是我的代码:

模板.html:

<a href="{{ request.user }}/delete" class="ml-4">Delete Account</a><Br>

urls.py:

path('<str:username>/delete', delete_user, name='delete-user')

views.py:

def delete_user(request, username):
    context = {}

    u = User.objects.filter(username=username)
    u.delete()
    messages.success(request,'your account delete')
    return render(request, 'home/login.html', context=context)

【问题讨论】:

标签: python django django-views django-templates django-urls


【解决方案1】:

检查您的开发人员工具,您的 href 属性正在呈现什么。我认为您当前的模板标签未正确呈现 url。应该是这样的,根据Django的documentation

<a href="{% url 'delete-user' request.user %}" class="ml-4">Delete Account</a><Br>

请注意,默认情况下,您在模板中无权访问 request。如果您要通过用户名删除用户,则之前的代码将是:

<a href="{% url 'delete-user' user.username %}" class="ml-4">Delete Account</a><Br>

user 在您的模板中默认可访问。

请注意,这不是删除用户的安全方式,因为任何知道其他用户信息的人都可以访问此链接来删除帐户。您应该使用 POST 请求并检查请求删除链接的用户是否是该帐户的所有者。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 2019-05-22
    • 2019-08-14
    • 1970-01-01
    • 2016-10-30
    相关资源
    最近更新 更多