zoukankan      html  css  js  c++  java
  • djangoForm组件

    https://www.cnblogs.com/jabbok/p/9273786.html

    在之前学习了html form信息传递到django,然后进行处理,但是这很不方便。

    django有自己的组件Form

    1 django Form的验证思路

    前端:还是提交form表单

    后端:在app.views的函数里,把请求传递到forms.py的forms.Form类,进行匹配,得到正确和错误信息。

    主要有三部分只是,views里的响应机制,form.py里创建响应的表单类,html里的模板信息

    views:

    def user_login(request):
        if request.method == 'POST':    #当收到POST请求
            form = AddForm(request.POST)    #实例化表单类,将接受到的数据通过AddForm验证
    
            if form.is_valid():     #验证请求的内容是否验证通过。通过是True,否则False。
                a = form.cleaned_data['a']      #cleaned_data类型是字典,里面是提交成功后的信息
                b = form.cleaned_data['b']      #从表单类中获取的数据赋值给a,b。
                return HttpResponse(str(int(a) + int(b)))
    
        else:   #当收到GET请求
            form = AddForm()    #实例化表单类,展示表单类中的字段,表现到HTML就是<form>元素,实质就是渲染一张空表单,让用户填数据
    
        return render(request,'index.html',{'form':form})
    
    def get_name(request):
        if request.method == 'POST':
            form = NameForm(request.POST)
            print(type(form),form)
            if form.is_valid():
                    return HttpResponse('good!')
        else:
            form = NameForm()
            print(type(form),form)
    
        return render(request,'name.html',{'form':form})
    

      

    forms

    from django import forms
    
    class AddForm(forms.Form):
        a = forms.IntegerField()    #表单类的字段会映射到HTML表单的<input>元素
        b = forms.IntegerField()    #这和models类似
        c = forms.IntegerField()    #forms可选多种字段类型,对应不同的HTML输入元素
    
    class NameForm(forms.Form):
        your_name = forms.CharField(label='your name',max_length=120)
    

      

    html

    user_login:

    {#    这是一个表单渲染#}
        <form method="post">
    {#        防伪保护#}
            {% csrf_token %}
            {{ form }}
            <input type="submit" value="提交">
        </form>
    

      

    {{ form }}在get和post时,都会渲染为:

    <tr><th><label for="id_a">A:</label></th><td><input type="number" name="a" required id="id_a"></td></tr>
    <tr><th><label for="id_b">B:</label></th><td><input type="number" name="b" required id="id_b"></td></tr>
    <tr><th><label for="id_c">C:</label></th><td><input type="number" name="c" required id="id_c"></td></tr>
    

      

    getname:

    <form action="/getname/" method="post">
        {% csrf_token %}
        {{ form }}
        <input type="submit" value="提交">
    </form>
    

      

    {{ form }}在get和post的渲染,post多了一个value。

    <tr><th><label for="id_your_name">your name:</label></th><td><input type="text" name="your_name" maxlength="120" required id="id_your_name"></td></tr>
    <tr><th><label for="id_your_name">your name:</label></th><td><input type="text" name="your_name" value="jab" maxlength="120" required id="id_your_name"></td></tr>
    

      

     2 表单功能

  • 相关阅读:
    iframe,table,window.open求救问题
    你的明星臉~~哈哈~~~(要附正面照片哦==)
    DataGrid的表頭排序問題(GridView雷同了啦)
    致歉(TO师傅)
    程式設計師的著裝(哈哈哈~~~)
    SQL(top与group by)求助
    MySql与超级终端
    hdu 1061 Rightmost Digit
    hdu 2669 Romantic
    poj 1061 青蛙的约会
  • 原文地址:https://www.cnblogs.com/jabbok/p/9778141.html
Copyright © 2011-2022 走看看