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入门教程
Feb 08 Python
Python中的作用域规则详解
Jan 30 Python
Python字符编码与函数的基本使用方法
Sep 30 Python
python执行使用shell命令方法分享
Nov 08 Python
python实现在pandas.DataFrame添加一行
Apr 04 Python
用Python写脚本,实现完全备份和增量备份的示例
Apr 29 Python
对Python3 pyc 文件的使用详解
Feb 16 Python
python实现对图片进行旋转,放缩,裁剪的功能
Aug 07 Python
Python 生成一个从0到n个数字的列表4种方法小结
Nov 28 Python
Python实现图像去噪方式(中值去噪和均值去噪)
Dec 18 Python
PyCharm GUI界面开发和exe文件生成的实现
Mar 04 Python
python能做哪方面的工作
Jun 15 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
《魔兽争霸3:重制版》更新 多项视觉效果调整
2020/05/04 魔兽争霸
PHP安全防范技巧分享
2011/11/03 PHP
百度地图API应用之获取用户的具体位置
2014/06/10 PHP
php无限级分类实现评论及回复功能
2019/02/18 PHP
PHP如何将图片文件上传到另外一台服务器上
2019/08/26 PHP
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
javascript判断网页是关闭还是刷新
2015/09/12 Javascript
php简单数据库操作类的封装
2017/06/08 Javascript
SeaJS中use函数用法实例分析
2017/10/10 Javascript
手把手教你如何使用nodejs编写cli命令行
2018/11/05 NodeJs
bootstrap table插件动态加载表头
2019/07/19 Javascript
微信小程序实现点击按钮后修改颜色
2019/12/05 Javascript
VUE UPLOAD 通过ACTION返回上传结果操作
2020/09/07 Javascript
[01:07:53]RNG vs VG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
详解Python中find()方法的使用
2015/05/18 Python
python实现在字符串中查找子字符串的方法
2015/07/11 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
基于h5py的使用及数据封装代码
2019/12/26 Python
python程序如何进行保存
2020/07/03 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
中外合拍动画首获奥斯卡提名,“上海出品”《飞奔去月球》能否拿下最终大奖?
2021/03/16 国漫
html5指南-3.如何实现html元素拖拽功能
2013/01/07 HTML / CSS
阿迪达斯印度官方商城:adidas India
2017/03/26 全球购物
奇怪的鱼:Weird Fish
2018/03/18 全球购物
viagogo波兰票务平台:演唱会、体育比赛、戏剧门票
2018/04/23 全球购物
Dower & Hall官网:英国小众轻奢珠宝品牌
2019/01/31 全球购物
FORZIERI福喜利中国官网:奢侈品购物梦工厂
2019/05/03 全球购物
大学生个人自我鉴定
2013/12/03 职场文书
网络技术专业推荐信
2014/02/20 职场文书
《李广射虎》教学反思
2014/04/27 职场文书
综合实践活动总结
2014/05/05 职场文书
客服专员岗位职责
2015/02/10 职场文书
七年级作文之冬景
2019/11/07 职场文书
Django实现翻页的示例代码
2021/05/24 Python
Python连续赋值需要注意的一些问题
2021/06/03 Python
Axios取消重复请求的方法实例详解
2021/06/15 Javascript