Django forms表单 select下拉框的传值实例


Posted in Python onJuly 19, 2019

今儿继续做项目,学习了Django的forms生成前端的代码。

forms.py

class SignupForm(forms.Form):
  username = forms.CharField(validators=[user_unique_validate, username_rule_validate, ], required=True,
                max_length=30, min_length=5,
                error_messages={'required': '用户名不能为空', 'max_length': '用户名至少5位',
                        'min_length': '用户名最多30位'})
  password = forms.CharField(min_length=6, max_length=50, required=True,
                error_messages={'required': '密码不能为空',
                        'invalid': '密码格式错误',
                        'min_length': '密码不能少于6位',
                        'max_length': '密码最多50位'})
  classInfo = forms.ModelChoiceField(queryset=ClassInfo.objects.all(), required=True, empty_label=None, initial="预设值")#这里加的是班级名字
  email = forms.EmailField(validators=[email_unique_validate, ], required=True,
               error_messages={'required': '邮箱不能为空', 'invalid': '邮箱格式错误'})
  mobile = forms.CharField(validators=[mobile_validate, ], required=True,
               error_messages={'required': '手机号不能为空'})

然后views通过get方法获得表单的form

class SignupView(View):
  def get(self, request):
    obj = SignupForm()
    return render(request, 'user/signup.html', locals())

这里可以打印出来obj,可以看到表单类已经帮我们生成了前端代码

<tr><th><label for="id_username">Username:</label></th><td><input type="text" name="username" value="123123" minlength="5" maxlength="30" required id="id_username"></td></tr>
<tr><th><label for="id_password">Password:</label></th><td><input type="text" name="password" value="213123" minlength="6" maxlength="50" required id="id_password"></td></tr>
<tr><th><label for="id_classInfo">Classinfo:</label></th><td>
<select name="classInfo" id="id_classInfo">
 <option value="1" selected>15医药软件</option>
 <option value="2">15医药信息</option>
</select></td></tr>
<tr><th><label for="id_email">Email:</label></th><td><input type="email" name="email" value="123123231@qq.com" required id="id_email"></td></tr>
<tr><th><label for="id_mobile">Mobile:</label></th><td><input type="text" name="mobile" value="13328768123" required id="id_mobile"></td></tr>

其中select下拉框里的内容是从数据库中取出来的,利用ModelChoiceField,设置queryset来取出数据,这样实现动态存取select中的值。

而前端代码可以直接使用这个表单变量obj

<form method="post" action="{% url 'signup' %}">
  ...
  {% for field in obj %}
    {{ field }}
  {% end for %}
  ...
</form>

但是我这里没有设置label值,就没有直接这样偷懒,而是自己写了一个

<form method="post" action="{% url 'signup' %}>
....
   <tr>
     <td width="120" align="right" valign="top">用户名(学号)</td>
     <td width="auto" align="left"><input type="text" name="username" class="sls">        </td>
   </tr>
   <tr>
     <td width="120" align="right">密码</td>
     <td width="auto" align="left"><input type="password" name="password" class="sls"></td>
   </tr>
   <tr>
     <td width="120" align="right" valign="top">电子邮件</td>
     <td width="auto" align="left"><input type="text" name="email" class="sls"></td>
   </tr>
   <tr>
     <td width="120" align="right">班级</td>
     <td width="auto" align="left">
        {{ obj.classInfo }}
     </td>
   </tr>
   <tr>
     <td width="120" align="right" valign="top">手机号</td>
     <td width="auto" align="left"><input type="text" class="sls" name="mobile"></td>
   </tr>
....

前期我一直在用select标签来写,然后传值到option里,但是我发现通过再用obj.classInfo取里面的值时出现空白值

就类似于原本数据库存着两个选项,然后前端显示-------;选项一;空白;选项二;空白。

经过一番查找,出现-----这个选项是因为没有设置初始值,然后设置了initial

出现两个变量就是因为粗心大意,obj.classInfo本身就是个select标签,里面就有两个选项。

之后就是post提交验证,然后就是存值render操作了

def post(self, request):
    has_error = True
    obj = SignupForm(request.POST)
    #print(obj)
    if obj.is_valid():
      has_error = False
      username = obj.cleaned_data['username']
      password = obj.cleaned_data['password']
      class_name = obj.cleaned_data['classInfo']
      email = obj.cleaned_data['email']
      mobile = obj.cleaned_data['mobile']
  ......

以上这篇Django forms表单 select下拉框的传值实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中用函数作为返回值和实现闭包的教程
Apr 27 Python
利用python批量给云主机配置安全组的方法教程
Jun 21 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
Oct 11 Python
Python进程间通信Queue实例解析
Jan 25 Python
python把1变成01的步骤总结
Feb 27 Python
Python中最大递归深度值的探讨
Mar 05 Python
django settings.py 配置文件及介绍
Jul 15 Python
Python PyInstaller安装和使用教程详解
Jan 08 Python
Pycharm安装python库的方法
Nov 24 Python
python爬虫beautifulsoup解析html方法
Dec 07 Python
python必学知识之文件操作(建议收藏)
May 30 Python
python中使用 unittest.TestCase单元测试的用例详解
Aug 30 Python
Django组件content-type使用方法详解
Jul 19 #Python
django多个APP的urls设置方法(views重复问题解决)
Jul 19 #Python
django admin组件使用方法详解
Jul 19 #Python
使用python分析统计自己微信朋友的信息
Jul 19 #Python
django url到views参数传递的实例
Jul 19 #Python
Django  ORM 练习题及答案
Jul 19 #Python
Django之提交表单与前后端交互的方法
Jul 19 #Python
You might like
投票管理程序
2006/10/09 PHP
PHP XML error parsing SOAP payload on line 1
2010/06/17 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
2014/05/12 PHP
WordPress中邮件的一些修改和自定义技巧
2015/12/15 PHP
jQueryPad 实用的jQuery测试工具(支持IE,chrome,FF)
2010/05/22 Javascript
javascript动态加载二
2012/08/22 Javascript
使用JavaScript构建JSON格式字符串实现步骤
2013/03/22 Javascript
深入理解JavaScript高级之词法作用域和作用域链
2013/12/10 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
css与javascript跨浏览器兼容性总结
2014/09/15 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
2016/01/04 Javascript
jQuery插件实现适用于移动端的地址选择器
2016/02/18 Javascript
浅谈$('div a') 与$('div&gt;a')的区别
2016/07/18 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
微信小程序开发(一) 微信登录流程详解
2017/01/11 Javascript
详解jQuery中ajax.load()方法
2017/01/25 Javascript
JavaScript 函数节流详解及方法总结
2017/02/09 Javascript
Vue+axios 实现http拦截及路由拦截实例
2017/04/25 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
jquery将json转为数据字典的实例代码
2019/10/11 jQuery
跟老齐学Python之玩转字符串(1)
2014/09/14 Python
Python日志模块logging简介
2015/04/13 Python
Python字符和字符值(ASCII或Unicode码值)转换方法
2015/05/21 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
CSS3+js实现简单的时钟特效
2015/03/18 HTML / CSS
html5使用canvas画三角形
2014/12/15 HTML / CSS
中粮集团旗下食品网上购物网站:我买网
2016/09/22 全球购物
澳大利亚宠物食品和药物在线:Jumbo Pets
2018/03/24 全球购物
德国Discount-Apotheke中文官网:DC德式康线上药房
2020/02/18 全球购物
线程同步的方法
2016/11/23 面试题
婚纱摄影师求职信
2014/03/07 职场文书
2015年党员个人工作总结
2015/05/13 职场文书
六一晚会主持词开场白
2015/05/28 职场文书
健康教育主题班会
2015/08/14 职场文书
2016年万圣节活动总结
2016/04/05 职场文书