找不到页面 (404) 请求方法:POST 请求 URL:http://127.0.0.1:8000/accounts/signup/signup

Posted

技术标签:

【中文标题】找不到页面 (404) 请求方法:POST 请求 URL:http://127.0.0.1:8000/accounts/signup/signup【英文标题】:Page not found (404) Request Method: POST Request URL: http://127.0.0.1:8000/accounts/signup/signup 【发布时间】:2021-03-05 05:19:47 【问题描述】:

我在 Django 中收到页面未找到 404 错误。即使我在主应用程序和此应用程序中都正确映射了 URL。

urlpatterns = [
    path('',views.mainpage,name='main'),
    path("signup/",views.signup,name='signup'),
    path("login/",views.login,name='login'),
    path("logout/",views.logout,name='logout')
]

现在下面的 url 是主应用程序,我已经包含了子应用程序的 urls.py 是帐户。

urlpatterns = [
    path('',include('trial.urls')),
    path('accounts/',include('accounts.urls')),
    path('admin/', admin.site.urls),   
]

这是应用名称帐号的URL映射,用于处理帐号和注册详情。

错误在这个路径中

http://127.0.0.1:8000/accounts/signup/signup

因为它在下面提到的路径中运行良好。

http://127.0.0.1:8000/accounts/signup

任何人都可以建议我或帮助我找出问题所在。 它应该发生的是,

http://127.0.0.1:8000/accounts/signup

在这个路径之后,当我们点击提交时,它应该在数据库中创建一个用户并将页面返回或重定向到登录页面,并创建一条消息用户。

下面是账户应用的views.py代码。


def signup(request):
    if request.method == 'POST':
        first_name = request.POST['first_name']
        last_name = request.POST['last_name']
        username = request.POST['username']
        email = request.POST['email']
        password1 = request.POST['password1']
        user = User.objects.create_user(
            firstname=first_name, lastname=last_name, username=username, email=email, password=password1)
        user.save()
        print("USER CREATED SUCCESSFULLY")
        return redirect('/login.html')

任何人都可以帮助我解决问题所在。 谢谢。

【问题讨论】:

http://127.0.0.1:8000/accounts/signup/signup 为什么后面有两个/signup。您只创建了一个链接。 @asdasd 那是没有得到的,我只链接了一次注册页面,按照我的预期,它应该在创建用户后立即跳转到 login.html。出了什么问题? 您可以像这样将用户重定向到登录页面:return redirect('\login')。您还可以分享您创建注册表单的模板吗?因为我认为您在模板中设置了错误的表单操作。 @AjayLingayat 我无法在此处添加它,它显示的字符长度为 200 个字母,我该如何显示? @AjayLingayat 还是我的数据库有问题?我应该写任何查询吗?像makemigrations? 【参考方案1】:

你可以试试这个方法:

signup.html

<form action="\accounts\signup\" method="POST">
   % csrf_token %

【讨论】:

RuntimeError at /accounts/signup You called this URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASH set. Django can't redirect to the slash URL while maintaining POST data. Change your form to point to 127.0.0.1:8000/accounts/signup/ (note the trailing slash), or set APPEND_SLASH=False in your Django settings. 出现运行时错误。在显示此错误后,我将其编辑为像 /accounts/signup 这样的正斜杠,然后也是同样的错误,如果我将其更改为 accounts/signup 找不到页面错误。 我已经编辑了答案。查看新的action 属性值,它在\accounts\signup 之后多了一个斜线。试试看。 宾果游戏,非常感谢。我从上周开始尝试这个。 你能看看我个人资料中的另一个问题,比如提交按钮不起作用,我正在使用 ajax、JS、html 来验证一些答案。

以上是关于找不到页面 (404) 请求方法:POST 请求 URL:http://127.0.0.1:8000/accounts/signup/signup的主要内容,如果未能解决你的问题,请参考以下文章

找不到页面 (404) 请求方法:GET .......当前路径,博客/博客文章,与其中任何一个都不匹配

找不到页面 (404) 请求方法:GET 尝试单击另一个 .html 文件

Django 错误:找不到页面 (404) 请求方法:GET 请求 URL:http://127.0.0.1:8000/helpdesk/login/?next=/

Ajax请求返回结果为404问题

Codeigniter 404 Page Not Found 找不到您请求的页面

请求一个方法,后台能正常执行,前台报错404