Python Django:检查用户是否存在,不显示validationerror

Python Django:检查用户是否存在,不显示validationerror,python,django,Python,Django,(在Django的新员工)我已经尝试了所有的方法,并且花了一整天的时间试图让它发挥作用。 我试图检查用户是否存在,如果已经存在,则显示ValidationError。现在,我正在使用views.py来显示一个模板,该模板显示帐户未创建,因为forms.py应该处理的验证错误未显示 forms.py from django.contrib.auth.models import User from django import forms class UserForm(forms.ModelFor

(在Django的新员工)我已经尝试了所有的方法,并且花了一整天的时间试图让它发挥作用。 我试图检查用户是否存在,如果已经存在,则显示ValidationError。现在,我正在使用views.py来显示一个模板,该模板显示帐户未创建,因为forms.py应该处理的验证错误未显示

forms.py

from django.contrib.auth.models import User
from django import forms


class UserForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(UserForm, self).__init__(*args, **kwargs)
        self.fields['email'].required = True

    password = forms.CharField(widget=forms.PasswordInput)


    def clean_username(self):
        username = self.cleaned_data['username']
        if User.objects.filter(username=username).exists():
            raise forms.ValidationError("That user is already taken")
        return username

    class Meta:
        model = User
        fields = ['username', 'password', 'email']

        labels = {
            "email": "Email"
        }

    # including my login form too just in case
class LoginForm(forms.ModelForm):
    password = forms.CharField(widget=forms.PasswordInput)

    class Meta:
        model = User
        fields = ['username', 'password']
        labels = {
            "email": "Email"
        }
views.py

from django.shortcuts import render, redirect
from .forms import UserForm


def index(request):
    if request.user.is_authenticated:
        return redirect('/myaccount')
    else:
        title = "welcome"
        form = UserForm()

        context = {
            "template_title": title,
            "form": form

        }

        return render(request, "index.html", context)

def new_user(request):
    if request.method == "POST":

        form = UserForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data.get("username")
            password = form.cleaned_data.get("password")
            email = form.cleaned_data.get("email")
            form.save()

            return render(request, "created.html")

        return render(request, "notcreated.html")

在呈现
notcreated.html
模板时,需要包含表单错误。您将需要使用。该链接描述了
form.errors
的格式。我可以使用notcreated.html来显示错误消息,但这会删除用户在表单中键入的所有内容,因此我现在只使用它作为替代。我试图在用户名处理到视图之前对其进行验证。py通常的做法是使用单个视图。在POST中,如果表单未能验证,则表单对象将传递回原始模板。表单对象包含用户以前的输入。例如,见:或。谢谢,我现在明白了。我想有一种方法可以单独使用forms.py,但我想如果没有先通过POST的信息,服务器将无法获取用户名。