【问题标题】:Django POST from links to the view that is not specified in URLDjango POST 从链接到 URL 中未指定的视图
【发布时间】:2019-08-12 12:20:25
【问题描述】:

页面signup.html的url如图所示

urls.py

urlpatterns = [
    ...
    path('signup', views.Sign_up,name="signup"),
    ...
]

signup.html

<form class="signup-form initial-signup-form gtm_signup_register_form" action="." accept-charset="UTF-8" method="POST">
...
</form>

但是当提交表单而不是访问 Signup() 视图时,它指向 Login_view()。我得到的输出是“提供了无效的登录详细信息!”。但预期的输出是 home.html。

views.py

def Sign_up(request):
    Fname = request.POST.get("first_name")
    Lname = request.POST.get("last_name")
    Mno = request.POST.get("Mobile")
    email = request.POST.get("email")
    Pass = request.POST.get("pass")
    Role = request.POST.get("role")
    Loc = request.POST.get("self_loc")

    if request.method == "POST":
        userM = UserManager()
        if Role=="Consumer":
            userV= userM.create_user(Mno,Role,Pass)
        else:
            userV= userM.create_staffuser(Mno,Role,Pass)
        userV.first_name=Fname
        userV.last_name=Lname
        userV.email=email
        userV.location=Loc
        return render(request, "home.html", {})
    else:
        return render(request, "registration/signup.html", {})

def Login_view(request):
    print(request.method)
    if request.method == "POST":
        Uname = request.POST.get("Mobile")
        PassW = request.POST.get("password")
        print(Uname, PassW)
        user = authenticate(mobile_no = Uname, password=PassW)
        if user:
            if user.is_active:
                login(request,user)
                if user.is_staff:
                    return HttpResponseRedirect(reverse('index'))
                else:
                    return HttpResponseRedirect(reverse('home'))
            else:
                return HttpResponse("Account Not Active")
        else:
            print("Someone tried to login and failed")
            print("Mobile_no: {} and password {}".format(Uname,PassW))
            return HttpResponse("invalid login details supplied!")
    else:
        return render(request,"registration/login.html", {})

【问题讨论】:

    标签: django django-forms django-views django-urls


    【解决方案1】:

    signup.html 表单的 action 属性应该指向 "signup" 而不是 .

    <form class="signup-form initial-signup-form gtm_signup_register_form" action="signup" accept-charset="UTF-8" method="POST">
    ...
    </form>
    

    【讨论】:

    • 你能发布回溯吗?
    • 在 views.py 中,userV= userM.create_user(Mno,Role,Pass) 和 mobile_no=mobile_no,在 models.py 中
    • 发布您的 create_user 并确定您从表单传递的所有数据?很可能你在 create_user 中的 Mno,Role,Pass 上调用了一些东西,它是 None
    • 模型已添加到问题中
    • 已更正“NoneType”错误。 stackoverflow.com/questions/55286352/…
    猜你喜欢
    • 1970-01-01
    • 2014-02-03
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    • 2019-04-25
    • 2010-12-19
    相关资源
    最近更新 更多