博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django ---Form的字段、选择下拉框\radio\checkbox
阅读量:6677 次
发布时间:2019-06-25

本文共 3134 字,大约阅读时间需要 10 分钟。

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 renderfrom django import formsfrom django.forms import fieldsfrom django.forms import widgetsclass 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文件

    
Title
{% csrf_token %}

{

{ obj.user.label }} {
{ obj.user }}

{

{ obj.age.label }} {
{ obj.age }}

{

{ obj.email.label }} {
{ obj.email }}

{

{ obj.city.label }} {
{ obj.city }}

{

{ obj.gender.label }} {
{ obj.gender }}

{

{ obj.hobby.label }} {
{ obj.hobby.0 }}{
{ obj.hobby.1 }}

{

{ obj.province.label }} {
{ obj.province }}

{

{ obj.cc.label }} {
{ obj.cc }}

{

{ obj.dd.label }} {
{ obj.dd }}

{

{ obj.dd.label }} {% for row in obj.dd %} {
{ row }}{
{ '      ' }} {% endfor %}

 

 

对应的效果

 

 

 

 

 

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

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

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

from app01 import modelsclass 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})

 

转载于:https://www.cnblogs.com/lhqlhq/p/9182620.html

你可能感兴趣的文章
(016)给定一个有序数组(递增),敲代码构建一棵具有最小高度的二叉树(keep it up)...
查看>>
【零基础学习iOS开发】【01-前言】02-准备
查看>>
matlab之图像处理(2)
查看>>
javascript JSON
查看>>
Codeforces 839D Winter is here【数学:容斥原理】
查看>>
在js中怎样获得checkbox里选中的多个值?
查看>>
基于AllegroGraph实现Protege设计知识库模型的存储步骤
查看>>
线程中释放锁的方式
查看>>
VM环境下Linux虚拟机扩展存储空间操作方法总结
查看>>
PDB文件:每个开发人员都必须知道的
查看>>
深入理解生产者消费者
查看>>
EL表达式获取参数值${param.name}等
查看>>
Is there anyway to discover which ip addresses are connected to the db?
查看>>
远程桌面不能复制粘贴的解决办法
查看>>
实战案例解析电商对抗羊毛党的策略与技术
查看>>
iOS开发-UITapGestureRecognizer手势
查看>>
tcpdump wireshark 实用过滤表达式(针对ip、协议、端口、长度和内容) 实例介绍...
查看>>
C#.net调用axis2webService
查看>>
NOIP2010乌龟棋[DP 多维状态]
查看>>
Linux 系统中用户切换(su user与 su - user 的区别)
查看>>