Django 表单获取 GET 请求而不是 POST 请求

时间:2021-04-22 15:00:06

标签: python django django-forms visual-web-developer

以前此代码是发送发布请求。突然重启服务器后,它开始发送get。 如果我从互联网上获取一些有效的邮政编码,然后继续尝试和擦除,那么我的代码就会开始发送邮政请求。但是过了一段时间,当我放上我的原始代码时,这将开始发送 get 请求而不是 post 请求。

user_registration_form.html

<form method="post">
    {% csrf_token %}
    {{ form }}
</form>
<input type="submit" value="Register">

forms.py

from django.forms import ModelForm
from django import forms
from .models import StudentData
class StudentRegister(ModelForm):
    class Meta:
        model = StudentData
        fields = "__all__"
        widgets = {'password': forms.PasswordInput(),
                   'rpassword': forms.PasswordInput()}
    def clean(self):
        cleaned_data = super().clean()
        password, rpassword = cleaned_data.get('password'), cleaned_data.get('rpassword')
        if password != rpassword:
            error_msg = "Both passwords must match"
            self.add_error('rpassword', error_msg)

views.py

from django.shortcuts import render
from .forms import StudentRegister
from django.contrib import messages
def login_register(request):
    return render(request, 'users/login_register.html')
def guest_register(request):
    return render(request, 'users/guest_register.html')
def student_data(request):
    if request.method == 'POST':
        print('post')
        form = StudentRegister(request.POST)
        if form.is_valid():
            print('valid form')
            form.save()
            messages.success(request, f"You are registered successfully, {form.cleaned_data.get('name')}")
            return render(request, "<h3>Registration done</h3>")
    else:
        print('get')
        form = StudentRegister()
    return render(request, 'users/user_registration_form.html', {'form': form})

#models.py

from django.db import models
from django.core.validators import MaxLengthValidator
class StudentData(models.Model):
    name = models.CharField(max_length=100)
    room_no = models.CharField(max_length=4)
    email = models.EmailField()
    mobile = models.CharField(max_length=10)
    password = models.CharField(max_length=20)
    rpassword = models.CharField(max_length=20)
    def __str__(self):
        return f'{self.name} data'

0 个答案:

没有答案