zoukankan      html  css  js  c++  java
  • Django ---Form的字段、选择下拉框 adiocheckbox

    Django Form组件
    1 验证
    2 生成HTML(保留上次输入内容)
    3 初始化默认值

    FORM重点
    -字段
      ChoiceField 单选框
      MultipleChoiceField 多选框
      CharField
      IntegerField
      DecimalField 小数  
      DateField
      DateTimeField
      EmailField
      GenericIPAddressField IP

      RegexField 自定义正则

     -HTML插件

      通过attrs(class="jj") 给字段添加属性

    自定义字段时的views文件

    from django.shortcuts import render
    
    from django import forms
    from django.forms import fields
    from django.forms import widgets
    
    class TestForm(forms.Form):
        user = fields.CharField(
            required=False,
            max_length=12,
            min_length=3,
            error_messages={"required":'不能为空'},
    
    
                )
        age = fields.IntegerField()
        email = fields.EmailField()
    
        city =fields.ChoiceField(
            choices=[(1,"北京"),(2,"上海"),(3,"广州"),], #单选下拉框
            initial=2
        )
    
        gender =fields.CharField(
            widget=widgets.Select(choices=[(1,""),(2,""),]),     #单选下拉框  选男不选女
            initial=2
        )
    
        hobby=fields.CharField(
            widget=widgets.RadioSelect(choices=[(1,""),(2,""),]),   #单选radio
            initial = 2,
        )
    
        province=fields.MultipleChoiceField(
            choices=[(1,'安徽'),(2,'江苏'),(3,'广东')],    #d多选下拉框
            initial=[1,2]
        )
    
        cc=fields.CharField(
            widget=widgets.CheckboxInput(),    #单选checkbox
        )
    
        dd=fields.MultipleChoiceField(    #多选 checkbox
            initial=[2,],
            choices=((1,'a'),(2,'b'),(3,"c")),
            widget=widgets.CheckboxSelectMultiple
        )
    
    def test(request):
        if request.method == "GET":
            obj=TestForm()
            render(request,'test.html',{"obj":obj})
    
        if request.method == 'POST':
            obj =TestForm(request.POST)
    
        return render(request,'test.html',{'obj':obj})

    对应的HTML文件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="" method="post" novalidate>
        {% csrf_token %}
        <p>{{ obj.user.label }}   {{ obj.user }}</p>
        <p>{{ obj.age.label }}   {{ obj.age }}</p>
        <p>{{ obj.email.label }}   {{ obj.email }}</p>
        <p>{{ obj.city.label }}   {{ obj.city }}</p>
        <p>{{ obj.gender.label }}   {{ obj.gender }}</p>
        <p>{{ obj.hobby.label }}   {{ obj.hobby.0 }}{{ obj.hobby.1 }}</p>
        <p>{{ obj.province.label }}   {{ obj.province }}</p>
        <p>{{ obj.cc.label }}   {{ obj.cc }}</p>
        <p>{{ obj.dd.label }}    {{ obj.dd }}</p>
        <p>{{ obj.dd.label }}
            {% for row in obj.dd %}
                {{ row }}{{ '&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp' }}
            {% endfor %}
        </p>
    
    
        <input type="submit" value="提交">
    </form>
    
    
    
    
    
    </body>
    </html>

    对应的效果

    ----------------------------------------------------------------------

    用单选下拉框是,下拉框内的内容需要从数据库中取,

    如果直接去,浏览器会将数据库的内容加载然后存到内存。后期数据库更新时,浏览器也不会更新的,所以需要添加__int__()属性

    from app01 import models
    class LoveForm(forms.Form):
        
       price
    = fields.IntegerField() user_id = fields.IntegerField( # widget=widgets.Select(choices=[(0,'alex'),(1,'杨建'),(2,'刘昊辰')]) widget = widgets.Select() ) def __init__(self,*args,**kwargs): #实时根据数据库更新,每次运行时,都会执行__int__(),得到choices super(LoveForm, self).__init__(*args,**kwargs) self.fields['user_id'].widget.choices=models.UserInFo.objects.values_list('id','username') def love(request): obj=LoveForm() return render(request,'love.html',{'obj':obj})
  • 相关阅读:
    gulp教程、gulp-less安装
    vue学习总结
    javascript数组去重
    【操作系统】操作系统高频面试考点总结
    【面经系列】一线互联网大厂前端面试技巧深入浅出总结
    【编程题与分析题】Javascript 之继承的多种实现方式和优缺点总结
    【计算机网络】TCP基础知识详解
    【操作系统】操作系统面试基础知识点总结
    【数据结构与算法】数据结构基础知识总结(面试考点)
    【前端知识体系-JS相关】JS-Web-API总结
  • 原文地址:https://www.cnblogs.com/lhqlhq/p/9182620.html
Copyright © 2011-2022 走看看