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

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

  • 相关阅读:
    理解.NET中的异常(二)
    路径,文件,目录,I/O常见操作汇总(一)
    使用PInvoke.NET插件为托管代码添加Win32 API签名
    使用JavaScript检测浏览器的相关特性
    javascript中的变量
    曾经的你
    WinampMy Favorite Media Player
    新的开始,认真地写博客
    log4net的各种Appender配置示例
    使用GhostDoc为代码生成注释文档
  • 原文地址:https://www.cnblogs.com/lystbc/p/9333236.html
Copyright © 2011-2022 走看看