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 相关文章推荐
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
Nov 16 Python
Python排序算法实例代码
Aug 10 Python
在cmder下安装ipython以及环境的搭建
Oct 19 Python
python 高效去重复 支持GB级别大文件的示例代码
Nov 08 Python
python print输出延时,让其立刻输出的方法
Jan 07 Python
python实现桌面壁纸切换功能
Jan 21 Python
简单了解python PEP的一些知识
Jul 13 Python
Tkinter中复选菜单是否被选中的判断与设置方式
Mar 04 Python
python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例
Mar 06 Python
Python Socketserver实现FTP文件上传下载代码实例
Mar 27 Python
python中PyQuery库用法分享
Jan 15 Python
pytorch 一行代码查看网络参数总量的实现
May 12 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下读取文本文件的代码
2008/07/02 PHP
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
2010/02/08 PHP
php ob_flush,flush在ie中缓冲无效的解决方法
2010/05/09 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
PHP中替换换行符的几种方法小结
2012/10/15 PHP
学习php设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
PHP实现文件上传功能实例代码
2017/05/18 PHP
php提高脚本性能的4个技巧
2020/08/18 PHP
JObj预览一个JS的框架
2008/03/13 Javascript
jQuery Selector选择器小结
2010/05/06 Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
2017/01/13 Javascript
Swiper自定义分页器使用详解
2017/12/28 Javascript
从零开始用electron手撸一个截屏工具的示例代码
2018/10/10 Javascript
ES6基础之展开语法(Spread syntax)
2019/02/21 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
Python使用urllib2获取网络资源实例讲解
2013/12/02 Python
深入解析Python编程中JSON模块的使用
2015/10/15 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
2018/12/05 Python
在Python 字典中一键对应多个值的实例
2019/02/03 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
2019/02/21 Python
解决python执行不输出系统命令弹框的问题
2019/06/24 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
python 爬虫请求模块requests详解
2020/12/04 Python
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
中药专业大学生医药工作求职信
2013/10/25 职场文书
名人演讲稿范文
2014/09/16 职场文书
2015年行政人事工作总结
2015/05/21 职场文书
市级三好生竞选稿
2015/11/21 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书
超级实用!五步法则,教你写好年终工作总结
2019/12/05 职场文书
Spring依赖注入多种类型数据的示例代码
2022/03/31 Java/Android
清空 Oracle 安装记录并重新安装
2022/04/26 Oracle
Java8 CompletableFuture 异步回调
2022/04/28 Java/Android