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的值只有五位,不足六位,所以有对应的提示。我们两次实验呢,只是更改了一个字段,就是类里面第一个赋值(定义)的字段。但是这个字段却影响了结果输出,由此得出结论。

 

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

posted @ 2018-07-18 23:15  糖宝虫  阅读(221)  评论(0编辑  收藏  举报