zoukankan      html  css  js  c++  java
  • django Form数据读取问题

    1.在我学习django的过程中,我学习到了一个关于表单验证的问题

    2.我们从前端post一个表单,通过urls配置,传给对应的view方法

    3.然后再传给Form验证

    4.一开始我是很好奇,在view是传整个querydict,那Form是怎么从这个字典里面取的值呢

    5.后面经过反复试验,原来是根据我们在Form里面定于的字段来取的

    view.py
    
    def insert(request):
        if request.method == "POST":
            form=RegistrationForm(request.POST)
            print(request.POST)
            print(type(request.POST))
            if form.is_valid():
                username = form.cleaned_data["username"]
                password = form.cleaned_data["username"]
                message.objects.create(username=username, password=password)
            else:
                return render(request, "insert.html",{"error": form.errors, "form": form})
        return render(request,"insert.html")
    

      

    form.py
    
    from django import forms
    from django.forms import Field
    from django.http import QueryDict
    import os,django
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "HelloWorld.settings")# project_name 项目名称
    django.setup()
    
    class RegistrationForm(forms.Form):
        sender = forms.CharField(label="username", required=True, min_length=6, max_length=20,
                                   error_messages={'required': '密码不能为空1.', 'min_length': '至少6位', 'max_length': '小于20位'})
    
        message = forms.CharField(label="password",required=True, min_length=6, max_length=30,
                               error_messages={'required': '密码不能为空2.', 'min_length': '至少6位', 'max_length': '小于20位'})
    
    
    
    if __name__=="__main__":
        a=QueryDict('username=testtest&password=testtest')
        b={'subject': 'hello',
                 'message': 'Hi there',
                 'sender': 'foo@example.com',
                 'cc_myself': True}
        RE=RegistrationForm(b)
        print(RE)
        print(RE.data)
    

      

    6.下面我们就来验证验证一下

    我来运行一下form文件,结果和输出,没有抛出错误,因为sender的值大于6

     7.第二次实验,我们很明显看到了提示,因为subject的值只有五位,不足六位,所以有对应的提示。我们两次实验呢,只是更改了一个字段,就是类里面第一个赋值(定义)的字段。但是这个字段却影响了结果输出,由此得出结论。

     其实我也想认真的看源码,奈何看不懂,所以只能猜测,望大神看了指点一二

  • 相关阅读:
    【算法笔记】B1020 月饼
    JZOJ 3412. 【NOIP2013模拟】KC看星
    JZOJ 3517. 空间航行
    JZOJ 3515. 软件公司
    JZOJ 3514. 最小比例
    JZOJ 3490. 旅游(travel)
    luogu P3178 [HAOI2015]树上操作
    JZOJ 3427. 归途与征程
    JZOJ 3426. 封印一击
    JZOJ 3425. 能量获取
  • 原文地址:https://www.cnblogs.com/lystbc/p/9333236.html
Copyright © 2011-2022 走看看