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 相关文章推荐
使用Python的Supervisor进行进程监控以及自动启动
May 29 Python
Python实现微信公众平台自定义菜单实例
Mar 20 Python
简单讲解Python编程中namedtuple类的用法
Jun 21 Python
Django应用程序中如何发送电子邮件详解
Feb 04 Python
windows下搭建python scrapy爬虫框架步骤
Dec 23 Python
python实现二维数组的对角线遍历
Mar 02 Python
python覆盖写入,追加写入的实例
Jun 26 Python
python离线安装外部依赖包的实现
Feb 13 Python
详解python内置常用高阶函数(列出了5个常用的)
Feb 21 Python
jupyter notebook运行命令显示[*](解决办法)
May 18 Python
Python同时迭代多个序列的方法
Jul 28 Python
使用PyCharm官方中文语言包汉化PyCharm
Nov 18 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 数组的一个悲剧?
2011/05/11 PHP
利用Ffmpeg获得flv视频缩略图和视频时间的代码
2011/09/15 PHP
浅析php中如何在有限的内存中读取大文件
2013/07/02 PHP
PHP实现简单数字分页效果
2015/07/26 PHP
WordPress中用于创建以及获取侧边栏的PHP函数讲解
2015/12/29 PHP
使用PHP json_decode可能遇到的坑与解决方法
2017/08/03 PHP
function, new function, new Function之间的区别
2007/03/08 Javascript
javascript自定义的addClass()方法
2014/05/28 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
JS判断浏览器是否安装flash插件的简单方法
2016/09/13 Javascript
JavaScript 继承详解(五)
2016/10/11 Javascript
js实现用户输入的小写字母自动转大写字母的方法
2017/01/21 Javascript
Vue中添加手机验证码组件功能操作方法
2017/12/07 Javascript
JS实现table表格内针对某列内容进行即时搜索筛选功能
2018/05/11 Javascript
Canvas实现微信红包照片效果
2018/08/21 Javascript
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
微信小程序发送短信验证码完整实例
2019/01/07 Javascript
[01:11:15]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python基础教程之循环介绍
2014/08/29 Python
Python 40行代码实现人脸识别功能
2017/04/02 Python
python 拼接文件路径的方法
2018/10/23 Python
在Python中定义一个常量的方法
2018/11/10 Python
详解python pandas 分组统计的方法
2019/07/30 Python
Django ValuesQuerySet转json方式
2020/03/16 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
美国最大的香水出口:FragranceX.com
2017/11/04 全球购物
英国家庭珠宝商:T. H. Baker
2018/02/08 全球购物
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
新生入学欢迎词
2015/01/26 职场文书
2015年质量管理工作总结范文
2015/05/18 职场文书
详解Redis瘦身指南
2021/05/26 Redis
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/06 PostgreSQL
JS轻量级函数式编程实现XDM三
2022/06/16 Javascript