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 相关文章推荐
Windows下安装python2.7及科学计算套装
Mar 05 Python
python保存字符串到文件的方法
Jul 01 Python
win10下Python3.6安装、配置以及pip安装包教程
Oct 01 Python
tensorflow 打印内存中的变量方法
Jul 30 Python
Python中的pathlib.Path为什么不继承str详解
Jun 23 Python
django将数组传递给前台模板的方法
Aug 06 Python
基于MATLAB和Python实现MFCC特征参数提取
Aug 13 Python
Django框架下静态模板的继承操作示例
Nov 08 Python
Python图片的横坐标汉字实例
Dec 04 Python
Python+Redis实现布隆过滤器
Dec 08 Python
Python count函数使用方法实例解析
Mar 23 Python
Python基于Serializer实现字段验证及序列化
Nov 04 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
smarty模板引擎中内建函数if、elseif和else的使用方法
2015/01/22 PHP
PHP+Session防止表单重复提交的解决方法
2018/04/09 PHP
PHP基于mcript扩展实现对称加密功能示例
2019/02/21 PHP
fromCharCode和charCodeAt 方法
2006/12/27 Javascript
Firefox下提示illegal character并出现乱码的原因
2010/03/25 Javascript
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
jQuery下的动画处理总结
2013/10/10 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
深入分析Javascript跨域问题
2015/04/17 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
jQuery模仿单选按钮选中效果
2016/06/24 Javascript
Bootstrap CSS布局之表单
2016/12/17 Javascript
详解Weex基于Vue2.0开发模板搭建
2017/03/20 Javascript
原生js实现简单的Ripple按钮实例代码
2017/03/24 Javascript
angular2中Http请求原理与用法详解
2018/01/11 Javascript
JavaScript 中的12种循环遍历方法【总结】
2018/05/31 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
vue实现简易图片左右旋转,上一张,下一张组件案例
2020/07/31 Javascript
python django事务transaction源码分析详解
2017/03/17 Python
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
python生成带有表格的图片实例
2019/02/03 Python
python绘制玫瑰的实现代码
2020/03/02 Python
五分钟学会怎么用python做一个简单的贪吃蛇
2021/01/12 Python
CSS3中Color的一些特性介绍
2012/05/27 HTML / CSS
机电一体化大学生求职信
2013/11/08 职场文书
人力资源管理专业应届生求职信
2014/04/24 职场文书
群众路线自我剖析材料
2014/10/08 职场文书
2014年后勤工作总结范文
2014/12/16 职场文书
公司开会通知
2015/04/20 职场文书
党委工作总结2015
2015/04/27 职场文书
喋血孤城观后感
2015/06/08 职场文书
毕业酒会致辞
2015/07/29 职场文书
导游词之阳朔遇龙河
2019/12/16 职场文书
Python下opencv库的安装过程及问题汇总
2021/06/11 Python
springcloud之Feign超时问题的解决
2021/06/24 Java/Android
SpringBoot+Redis实现布隆过滤器的示例代码
2022/03/17 Java/Android