Django POST方法不起作用,仅获取GET方法,甚至表单提交

Django POST方法不起作用,仅获取GET方法,甚至表单提交,django,django-models,django-forms,Django,Django Models,Django Forms,我正在尝试运行我的django表单,但每次它都作为GET方法运行,即使在提交表单之后也是如此。 我一直在寻找解决办法,但运气不好 这里是vs代码中的服务器日志 这是我的放弃密码.html 您的方法具有正确的行为 <<<<<< THIS IS GET METHOD - SHOW FORM >>>>>>>>>>> [31/Oct/2019 16:15:14] "GET /forgotpassword

我正在尝试运行我的django表单,但每次它都作为GET方法运行,即使在提交表单之后也是如此。 我一直在寻找解决办法,但运气不好

这里是vs代码中的服务器日志

这是我的放弃密码.html


您的方法具有正确的行为

<<<<<< THIS IS GET METHOD - SHOW FORM >>>>>>>>>>>
[31/Oct/2019 16:15:14] "GET /forgotpassword/ HTTP/1.1" 200 1808
<<<<<< THIS IS POST METHOD - SUBMIT FORM >>>>>>>>>>>
[31/Oct/2019 16:15:17] "POST /successforgotpassword/ HTTP/1.1" 200 286
>>>>>>>
[2019年10月31日16:15:14]“获取/放弃密码/HTTP/1.1”200 1808
>>>>>>
[2019年10月31日16:15:17]“POST/successforgotpassword/HTTP/1.1”200 286
尝试以下解决方案:

最重要的更改是action=“/放弃密码”/“而不是action=“/成功放弃密码”/”


视图.py

从django.shortcuts导入渲染,重定向
从。模型导入*
def放弃密码(请求):
"""
申请更改密码的表格
:参数请求:
:返回:
"""
form=放弃PasswordForm()
如果request.method==“POST”:
打印(“>>>>>>”)
表单=放弃密码表单(request.POST)
如果form.is_有效():
打印(“>>>>>>”)
邮件=form.cleaned\u data.get(“邮件”)
#你的逻辑是这样的
返回重定向(“/successforgotpassword”)
返回呈现(请求“forgotpassword.html”,{'form':form})
def successforgotpassword(请求):
"""
成功消息屏幕
:参数请求:
:返回:
"""
返回呈现(请求“successforgotpassword.html”)
放弃密码.html


{%csrf_令牌%}
{{form.mail}
{%if form.mail.help_text%}
{{form.mail.help_text}
{%endif%}
{%form.mail.errors%中的错误}
{{error}}
{%endfor%}
successforgotpassword.html


检查邮箱以重置密码


您的
正在重定向到
成功放弃密码()
并且您的
POST
逻辑在
放弃密码()
中,这是一个错误,我已经纠正了它,如果您运行我的代码,它将获得相同的GET方法。请检查@jacekbudzynskihi@jacekbudzynski,你能检查一下我的代码并检查它是否在你的系统中工作吗?我认为这是剩下的唯一选择,因为我也没有发现任何错误
from django import forms

class ForgotPasswordForm(forms.Form):

    mail = forms.EmailField(label="EMAILL - ID", label_suffix="*", max_length=50, min_length=4,  widget=forms.EmailInput(
        attrs={"class": "form-control", "placeholder": "Enter Email Address"}))

    def clean_mail(self):
        passed_data1 = self.cleaned_data.get("mail")
        passed_data2 = self.cleand_data["mail"]
        print(passed_data1, passed_data2)
        req_data = "abc@gmail.com"
        if passed_data1 == req_data:
            raise forms.ValidationError("boss no gmail , why!!!")
        if passed_data1 == "":
            raise forms.ValidationError("boss no gmail , why!!!")
        return passed_data1

<body>
  <div class="container" style="margin-top: 100px;">
    <form action="/successforgotpassword/" method="POST" class="form-horizontal" enctype="multipart/form-data">
      {% csrf_token %}
      <div class="jumbotron boxing">
        <p style="text-align:center; background-color: rgb(246,
                        250, 8); color: rgb(250, 19, 19); font-size: 18px;">
          Please provide your valid email address , We are going to send mail
          to mentioned email address , So that you can reset your password
        </p>
        <br /><br />
        <div class="form-group">
          {% for fld in frgpwdform %}
          {{ fld.label }}
          {{ fld }}
          {% endfor%}
        </div>

        <div class="alert-danger">
          {% if frgpwdform.errors %} {% for err in frgpwdform.errors%}
          <p class="alert-danger">{{ err }}</p>
          {% endfor %} {%endif %}
        </div>

        <br />
        <div class="form-group">
          <input type="submit" class="btn btn-primary btn-lg" value="SEND RESET LINK TO EMAIL ADDRESS" />

          <a href="/register" class="nav-link">
            <h3>Register?</h3>
          </a>
        </div>
      </div>
    </form>
  </div>
</body>
from django.shortcuts import render, redirect
from .models import ForgotPasswordForm


def forgotpassword(request):
    if request.method == "POST":
        print("<<<<<< THIS IS POST METHOD >>>>>>>>>>>")
        frgpwdform = ForgotPasswordForm(request.POST)
        passed_value = request.cleand_data.get("mail")
        print(passed_value)
        if frgpwdform.is_valid():
            print("<<<<<< THIS IS VALID >>>>>>>>>>>")

            return render(request, "successforgotpassword.html", {'frgpwdform': frgpwdform})
        else:
            print("<<<<<< THIS IS INVALID >>>>>>>>>>>")
            return render(request, "forgotpassword.html", {'frgpwdform': frgpwdform})

    else:
        frgpwdform = ForgotPasswordForm()
        print("<<<<<< THIS IS GET METHOD >>>>>>>>>>>")
        return render(request, "successforgotpassword.html", {'frgpwdform': frgpwdform})

    return render(request, "forgotpassword.html", {'frgpwdform': frgpwdform})


def successforgotpassword(request):
    return render(request, "successforgotpassword.html")
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Success Forgot Password</title>
</head>

<body>
    {{frgpwdform}}
    {{frgpwdform.email}}
</body>

</html>
from django.urls import path
from . import views


urlpatterns = [

    path("forgotpassword/", views.forgotpassword),
    path("successforgotpassword/", views.successforgotpassword),

]

<<<<<< THIS IS GET METHOD - SHOW FORM >>>>>>>>>>>
[31/Oct/2019 16:15:14] "GET /forgotpassword/ HTTP/1.1" 200 1808
<<<<<< THIS IS POST METHOD - SUBMIT FORM >>>>>>>>>>>
[31/Oct/2019 16:15:17] "POST /successforgotpassword/ HTTP/1.1" 200 286
<form action="/forgotpassword/" method="POST" class="form-horizontal">
from django.shortcuts import render, redirect
from .models import *


def forgotpassword(request):
    """
    Form to request password change
    :param request:
    :return:
    """
    form = ForgotPasswordForm()

    if request.method == "POST":
        print("<<<<<< THIS IS POST METHOD >>>>>>>>>>>")
        form = ForgotPasswordForm(request.POST)

        if form.is_valid():
            print("<<<<<< THIS IS VALID FORM >>>>>>>>>>>")
            mail = form.cleaned_data.get("mail")
            # Your logic goes here
            return redirect('/successforgotpassword')

    return render(request, "forgotpassword.html", {'form': form})


def successforgotpassword(request):
    """
    Success message screen
    :param request:
    :return:
    """
    return render(request, "successforgotpassword.html")
<form action="/forgotpassword/" method="POST" class="form-horizontal">
  {% csrf_token %}
  <div class="form-group {% if form.mail.errors %}has-error{% endif %}">
    {{ form.mail }}
    {% if form.mail.help_text %}
      <span class="help-block">{{ form.mail.help_text }}</span>
    {% endif %}
    {% for error in form.mail.errors %}
      <span class="help-block">{{ error }}</span>
    {% endfor %}
  </div>
  <div class="form-group">
    <input type="submit" class="btn btn-primary btn-lg" value="SEND RESET LINK TO EMAIL ADDRESS" />
    <a href="/register" class="nav-link">
      <h3>Register?</h3>
    </a>
  </div>
</form>
<body>
  <p>Check your mailbox to reset the password</p>
</body>