Django 构建模板form表单的两种方法


Posted in Python onJune 14, 2020

通常情况下,我们想构建一张表单时会在模板文件login.html中写入

<form action="/your-name/" method="post">
 <label for="your_name">Your name: </label>
 <input id="your_name" type="text" name="your_name" value="{{ current_name }}">
 <input type="submit" value="OK">
</form>

下面说说我们在使用django是如何在模板文件中生成form表单:

1、自定义显示的字段:

假如我们要在模板中生成一张含有username和content的表单

在app下新建forms.py(/users/forms.py)

from django import forms

class MessageGetForm(forms.Form):
 username = forms.CharField(label='用户', max_length=5) #max_length 浏览器限制用户输入的字符串长度
 content = forms.CharField(label='留言', max_length=100)

在视图文件中引用上边表单字段并传递给模板(users/view.py)

from apps.users.forms import MessageGetForm

class MessageView(View):
 def get(self, request, *args, **kwargs):
  message = MessageGetForm()

  return render(request, "message.html", {"message": message})

在模板文件调用(message.html)

<form action="" method="get"> 
 {{ message }}
</form>

渲染后的页面效果

Django 构建模板form表单的两种方法

2、将数据表的字段映射到模板文件form表单

数据表courses_lesson字段如下

Django 构建模板form表单的两种方法

在app下新建forms.py(/users/forms.py)

#此处我们假设你的项目文件courses/models.py内含有Lesson类from apps.courses.models import Lesson
from django.forms import ModelForm

class CoursesLessonForm(ModelForm):
 class Meta:
  model = Lesson
  fields = ['add_time', 'name', 'learn_times'] #要显示的字段

在视图文件中引用上边表单字段并传递给模板(users/view.py)

from apps.users.forms import CoursesLessonForm

class MessageView(View):
 def get(self, request, *args, **kwargs):
  message = CoursesLessonForm()

  return render(request, "message.html", {"message": message})

在模板文件调用(message.html)

<form action="" method="get">
 {{ message }}
</form>

页面效果图:

Django 构建模板form表单的两种方法

所有表单类都作为 django.forms.Form 或者  django.forms.ModelForm 的子类来创建。您可以把  ModelForm 想象成  Form 的子类。实际上  Form 和  ModelForm 从(私有)  BaseForm 类继承了通用功能,但是这个实现细节不怎么重要。

到此这篇关于Django 构建模板form表单的两种方法的文章就介绍到这了,更多相关Django 构建模板form表单的两种方法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
启动targetcli时遇到错误解决办法
Oct 26 Python
python调用Delphi写的Dll代码示例
Dec 05 Python
浅谈Python对内存的使用(深浅拷贝)
Jan 17 Python
python实现一个简单的并查集的示例代码
Mar 19 Python
Python实现简单的文本相似度分析操作详解
Jun 16 Python
使用pandas read_table读取csv文件的方法
Jul 04 Python
python基础梳理(一)(推荐)
Apr 06 Python
python RC4加密操作示例【测试可用】
Sep 26 Python
浅析python函数式编程
Sep 26 Python
如何利用python检测图片是否包含二维码
Oct 15 Python
利用python Pandas实现批量拆分Excel与合并Excel
May 23 Python
Python读写yaml文件
Mar 20 Python
Python Django搭建网站流程图解
Jun 13 #Python
Python xpath表达式如何实现数据处理
Jun 13 #Python
Python轻量级web框架bottle使用方法解析
Jun 13 #Python
PyInstaller运行原理及常用操作详解
Jun 13 #Python
Pandas缺失值2种处理方式代码实例
Jun 13 #Python
Python Django中间件使用原理及流程分析
Jun 13 #Python
Django QuerySet查询集原理及代码实例
Jun 13 #Python
You might like
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
2014/05/10 PHP
js电信网通双线自动选择技巧
2008/11/18 Javascript
如何确保JavaScript的执行顺序 之jQuery.html并非万能钥匙
2011/03/03 Javascript
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
鼠标滚轴控制文本框值的JS代码
2013/11/19 Javascript
js加减乘除丢失精度问题解决方法
2014/05/16 Javascript
使用node.js 获取客户端信息代码分享
2014/11/26 Javascript
jquery+easeing实现仿flash的载入动画
2015/03/10 Javascript
JavaScript面向对象的实现方法小结
2015/04/14 Javascript
javascript删除元素节点removeChild()用法实例
2015/05/26 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
JavaScript实现点击按钮直接打印
2016/01/06 Javascript
easyUI实现类似搜索框关键词自动提示功能示例代码
2016/12/27 Javascript
jQuery点击头像上传并预览图片
2017/02/23 Javascript
作为老司机使用 React 总结的 11 个经验教训
2017/04/08 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
2017/07/19 Javascript
简单了解微信小程序 e.target与e.currentTarget的不同
2019/09/27 Javascript
js实现微信聊天效果
2020/08/09 Javascript
[53:52]OG vs EG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
极简的Python入门指引
2015/04/01 Python
用Django实现一个可运行的区块链应用
2018/03/08 Python
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
Django基于客户端下载文件实现方法
2020/04/21 Python
css3个性化字体_动力节点Java学院整理
2017/07/12 HTML / CSS
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
酒店前厅员工辞职信
2014/01/08 职场文书
工作过失检讨书
2014/02/23 职场文书
社保转移委托书范本
2014/10/08 职场文书
2014年文员工作总结
2014/11/18 职场文书
综合测评自我评价
2015/03/06 职场文书
关于倡议书的范文
2015/04/29 职场文书
幼儿园毕业典礼家长致辞
2015/07/29 职场文书
小学班主任教育随笔
2015/08/15 职场文书
大学副班长竞选稿
2015/11/21 职场文书
教师节作文之小学四年级
2019/09/03 职场文书
MySQL 自动填充 create_time 和 update_time
2022/05/20 MySQL