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

作者:Caoxt 时间:2021-07-01 23:44:41 

通常情况下,我们想构建一张表单时会在模板文件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 类继承了通用功能,但是这个实现细节不怎么重要。

来源:https://www.cnblogs.com/Caoxt/p/13111579.html

标签:Django,构建,form表单
0
投稿

猜你喜欢

  • Python使用正则表达式获取网页中所需要的信息

    2023-04-08 17:13:33
  • Python configparser模块配置文件过程解析

    2023-03-04 09:35:49
  • python目标检测SSD算法训练部分源码详解

    2021-08-01 02:23:15
  • Mysql查询去空格的多种方法汇总

    2024-01-25 02:27:18
  • 如何提升JavaScript的运行速度(递归篇)

    2010-05-17 13:30:00
  • asp如何自动反馈电子邮件?

    2002-01-01 06:54:00
  • ASP 80040e14错误的解决方法

    2011-03-17 11:21:00
  • python多维数组切片方法

    2021-05-24 11:35:49
  • php-fpm报502问题的解决办法

    2023-10-12 04:12:23
  • XML入门的常见问题(一)

    2008-09-05 17:20:00
  • SQL Server中的执行引擎入门 图解

    2012-06-06 20:08:26
  • 解决python给列表里添加字典时被最后一个覆盖的问题

    2022-08-24 17:18:42
  • Django 忘记管理员或忘记管理员密码 重设登录密码的方法

    2021-02-14 09:40:46
  • 非常详细的SQL--JOIN之完全用法

    2024-01-17 11:59:19
  • Vue实现数据请求拦截

    2024-05-05 09:24:11
  • css样式表滤镜全接触

    2007-10-26 12:48:00
  • 一文搞懂Vue3中的异步组件defineAsyncComponentAPI的用法

    2024-04-29 13:09:08
  • vbscript与javascript如何传递变量(包括服务器端与客户端)

    2008-04-09 13:46:00
  • python爬取youtube视频的示例代码

    2021-10-02 16:25:26
  • 关于Youtube URL的十个技巧

    2009-04-21 13:19:00
  • asp之家 网络编程 m.aspxhome.com