Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 客户匹配查询不存在<;-这是什么?为什么它会以form.形式触发?\u valid()django_Python_Html_Django_Web_Django Models - Fatal编程技术网

Python 客户匹配查询不存在<;-这是什么?为什么它会以form.形式触发?\u valid()django

Python 客户匹配查询不存在<;-这是什么?为什么它会以form.形式触发?\u valid()django,python,html,django,web,django-models,Python,Html,Django,Web,Django Models,我有一个代码,这是我正在开发的应用程序的注册表,我正在实施验证的路上,这就发生了。 我不知道发生了什么事 这是我的观点 from django.http import HttpResponse from django.shortcuts import render, redirect, get_list_or_404 from users.models import costumer from .forms import costumer_forms def home_view(reque

我有一个代码,这是我正在开发的应用程序的注册表,我正在实施验证的路上,这就发生了。

我不知道发生了什么事 这是我的观点

from django.http import HttpResponse
from django.shortcuts import render, redirect, get_list_or_404
from users.models import costumer
from .forms import costumer_forms


def home_view(request, *args, **kwargs):
    # return HttpResponse("<h1>Hello</h1>")
    username = "Hello"
    stat = "Hey"
    if request.method == "POST":
        email = request.POST.get("email")
        password = request.POST.get("password")
        obj = costumer.objects.get(email=email)
        stat = obj.check_password(password)
        if stat:
            return redirect('messenger', username=obj.username)
    context = {
        "name": username,
        "stat": stat,
    }
    return render(request, "home.html", context)



def register_form(request):
    
    # if request.method == "POST":
    
    form = costumer_forms(request.POST or None, request.FILES or None)
    request.session.flush()
    if form.is_valid():
        print("hello")
        form = costumer_forms()
    context={
        "form": form,
    }
    return render(request, "register.html", context)

def contact_view(request, username):
    obj = costumer.objects.get(username = username)
    context ={
        "obj": obj
    }
    return render(request, "product/detail.html", context)
从django.http导入HttpResponse
从django.shortcuts导入渲染、重定向、获取列表或404
从users.models导入客户
from.forms导入客户表单
def home_视图(请求、*args、**kwargs):
#返回HttpResponse(“你好”)
username=“你好”
stat=“嘿”
如果request.method==“POST”:
email=request.POST.get(“电子邮件”)
密码=request.POST.get(“密码”)
obj=customer.objects.get(email=email)
stat=obj.检查密码(password)
如果统计:
返回重定向('messenger',username=obj.username)
上下文={
“名称”:用户名,
“stat”:stat,
}
返回呈现(请求“home.html”,上下文)
def登记表(请求):
#如果request.method==“POST”:
表单=客户表单(request.POST或None,request.FILES或None)
request.session.flush()
如果form.is_有效():
打印(“你好”)
表格=客户表格()
上下文={
“形式”:形式,
}
返回呈现(请求“register.html”,上下文)
def联系人视图(请求、用户名):
obj=customer.objects.get(用户名=username)
上下文={
“obj”:obj
}
返回呈现(请求“product/detail.html”,上下文)
这是我的表格

from django import forms
from users.models import costumer

class costumer_forms(forms.Form):
    firstname = forms.CharField(required=True,
                widget=forms.TextInput(
                    attrs={
                        "type":"text",
                        "name":"firstname",
                        "placeholder": "Ex Juan"
                    }
                )
    )
    lastname = forms.CharField(required=True,
                widget=forms.TextInput(
                    attrs={
                        "type":"text",
                        "name":"lastname",
                        "placeholder": "Dela Cruz"
                    }
                )
    )
    username = forms.CharField(required=True,
                widget=forms.TextInput(
                    attrs={
                        "type":"text",
                        "name":"username",
                        "placeholder": "What should we call you?"
                    }
                )
    )
    email = forms.CharField(required=True,
                widget=forms.TextInput(
                    attrs={
                        "type":"email",
                        "name":"lastname",
                        "placeholder": "Dela Cruz"
                    }
                )
    )
    contact = forms.CharField(required=True,
                widget=forms.TextInput(
                    attrs={
                        "type":"number",
                        "name":"contact",
                        "placeholder": "997XXXXXXX"
                    }
                )
    )
    password = forms.CharField(required=True,
                widget=forms.TextInput(
                    attrs={
                        "type":"password",
                        "name":"password",
                        "placeholder": "Please Make Password as Secure as Possible"
                    }
                )
    )

    about = forms.CharField(required=False,
            widget=forms.Textarea(
                    attrs={
                        "placeholder": "Tell us something about you",
                        "rows": 20,
                        "cols":50,
                    }
                )
    )
    class Meta:
        model = costumer
        fields=[
            "firstname",
            "lastname",
            "username",
            "email",
            "password",
        ]
    def clean_username(self, *args, **kwargs):
        username = self.cleaned_data.get("username")
        if costumer.objects.get(email=username):
            raise forms.ValidationError("Username Already Exists!!!!")
        else: return username

    def clean_email(self, *args, **kwargs):
        email = self.cleaned_data.get("email")
        if ".com" not in email:
            raise forms.ValidationError("Invalid email")
        if costumer.objects.get(email=email):
            raise forms.ValidationError("Email Already Exists!!!!")
        return email

    def clean_password(self, *args, **kwargs):
        passw  = self.cleaned_data.get("password")
        cpassw = self.data.get("confirm_password")
        if passw != cpassw:
            raise forms.ValidationError("Password not match")

        if len(passw) < 8:
            raise forms.ValidationError("Minimum 8 Characters for Passwords ")
        
        if len(passw) > 15:
            raise forms.ValidationError("Maximum 15 Characters for Passwords ")
        return passw

    
来自django导入表单的

从users.models导入客户
班级客户表(forms.Form):
firstname=forms.CharField(必需=True,
widget=forms.TextInput(
属性={
“类型”:“文本”,
“名字”:“名字”,
“占位符”:“前胡安”
}
)
)
lastname=forms.CharField(必需=True,
widget=forms.TextInput(
属性={
“类型”:“文本”,
“姓名”:“姓氏”,
“占位符”:“德拉·克鲁兹”
}
)
)
username=forms.CharField(必需=True,
widget=forms.TextInput(
属性={
“类型”:“文本”,
“名称”:“用户名”,
“占位符”:“我们该怎么称呼你?”
}
)
)
email=forms.CharField(必需=True,
widget=forms.TextInput(
属性={
“类型”:“电子邮件”,
“姓名”:“姓氏”,
“占位符”:“德拉·克鲁兹”
}
)
)
contact=forms.CharField(必需=True,
widget=forms.TextInput(
属性={
“类型”:“编号”,
“姓名”:“联系人”,
“占位符”:“997XXXXXXX”
}
)
)
密码=forms.CharField(必需=True,
widget=forms.TextInput(
属性={
“类型”:“密码”,
“名称”:“密码”,
“占位符”:“请使密码尽可能安全”
}
)
)
about=forms.CharField(必需=False,
widget=forms.Textarea(
属性={
“占位符”:“告诉我们一些关于你的事情”,
“行”:20,
“科尔斯”:50,
}
)
)
类元:
模特=顾客
田地=[
“名字”,
“姓氏”,
“用户名”,
“电子邮件”,
“密码”,
]
def clean_用户名(self、*args、**kwargs):
username=self.cleaned_data.get(“用户名”)
如果customer.objects.get(电子邮件=用户名):
raise forms.ValidationError(“用户名已存在!!!!”)
其他:返回用户名
def clean_电子邮件(self、*args、**kwargs):
email=self.cleanned_data.get(“email”)
如果电子邮件中没有“.com”:
raise forms.ValidationError(“无效电子邮件”)
如果customer.objects.get(email=email):
raise forms.ValidationError(“电子邮件已存在!!!!”)
返回电子邮件
def clean_密码(self、*args、**kwargs):
passw=self.cleaned_data.get(“密码”)
cpassw=self.data.get(“确认密码”)
如果passw!=cpassw:
raise forms.ValidationError(“密码不匹配”)
如果len(passw)<8:
raise forms.ValidationError(“密码至少8个字符”)
如果len(passw)>15:
raise forms.ValidationError(“密码最多15个字符”)
返回密码
这是我的registration.html

{%extends'base.html%}
{%load static%}
{%block head%}
{%endblock%}
{%block content%}




形式 {%csrf_令牌%} {{form.as_p}}
{%endblock%}
我是Django的新手,但我想问你为什么在if
表单中再次引用相同的表单。你的条件有效吗?根据我的经验,表单应该在这个条件之前被调用,我不认为有任何必要在里面再次分配相同的表单变量

def register_view(request):
    context = {}

    form = yourform(request.POST or None, request.FILES or None)
    if form.is_valid():
        form.save()
        user = form.cleaned_data.get('username')
        messages.success(request, 'Account was created for '+ user)
        
        #name of page you want to be redirected to after regitration.
        return redirect('login')
     context['form'] = form

     return render(request, 'yourtemplatename.html', context)

哟,祖普。事实证明,我一直收到错误的原因是我没有正确处理清理函数中的查询。我们可以以clean_email()为例

 def clean_email(self, *args, **kwargs):
        email = self.cleaned_data.get("email")
        if ".com" not in email:
            raise forms.ValidationError("Invalid email")
        if costumer.objects.get(email=email):
            raise forms.ValidationError("Email Already Exists!!!!")
        return email
事实证明,当_为valid()时,类窗体将运行所有清理函数
try:
    error = costumer.objects.get(email=email)
except costumer.DoesNotExist:  
    return email