表单

HTML中的表单:

从前端来说,表单就是用来将数据提交给服务器的,不管后台使用的是django还是php等其他的语言。只要把input标签放在form标签中,然后再添加一个提交的按钮,就可以将input标签中对应的值提交给服务器。

Django中的表单:

Django中的表单丰富了传统的html语言中的表单,在Django中的表单主要有以下两个作用:
(1)渲染表单模板
(2)表单验证数据是否合法。

Django中表单使用流程:

首先我们以一个留言板为例。简单的介绍一下Django中表单的使用流程。
(1)首先在项目中的APP中新建一个python文件forms.py,在forms.py文件中就可以定义我们的表单模板了。示例代码如下:
  1. from django import forms
  2. class MessageBoard(forms.Form):
  3. title = forms.CharField(max_length=100, min_length=2, label='标题', error_messages={'invalid': '您输入形式不合法'})
  4. content = forms.CharField(widget=forms.Textarea, label='内容')
  5. email = forms.EmailField(label='邮箱')
  6. reply = forms.BooleanField(required=False, label='是否需要回复')
(2)在views.py文件中,应用form表单,进行验证数据是否合法,使用GET请求返回定义的Django模板页面;采用POST请求,如果验证数据合法,就获取提交上来的数据,否者的话,就返回HttpResponse提示用户失败。示例代码如下:
  1. from django.shortcuts import render
  2. from django.http import HttpResponse
  3. from django.views import View
  4. from .forms import MessageBoard
  5. from django.forms.utils import ErrorDict
  6. class MessageBoard_view(View):
  7. def get(self,request):
  8. form = MessageBoard()
  9. return render(request, 'front/index.html', context={'form': form})
  10. def post(self,request):
  11. form = MessageBoard(request.POST)
  12. if form.is_valid():
  13. title = form.cleaned_data.get('title')
  14. content = form.cleaned_data.get('content')
  15. email = form.cleaned_data.get('email')
  16. reply = form.cleaned_data.get('reply')
  17. print(title)
  18. print(content)
  19. print(email)
  20. print(reply)
  21. return HttpResponse('success')
  22. else:
  23. # print(type(form.errors))
  24. # <class 'django.forms.utils.ErrorDict'>
  25. # 打印出显示的错误信息,字典形式显示
  26. print(form.errors.get_json_data())
  27. return HttpResponse('Fail')
(3)在index.html中将Django表单进行渲染。在table标签中对我们实例化的form对象使用as_table方法就可以将我们定义在forms.py文件中各个字段渲染成table表中的tr,td标签进行显示,在form标签中写入一个submit的input标签就可以将我们在浏览器中输入的信息采用POST请求,提交至后台,示例代码如下:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Django中表单的使用流程</title>
  6. </head>
  7. <body>
  8. <form action="" method="post">
  9. <table>
  10. {{ form.as_table }}
  11. <tr>
  12. <td></td>
  13. <td><input type="submit" value="提交"></td>
  14. </tr>
  15. </table>
  16. </form>
  17. </body>
  18. </html>
(4)在APP中创建文件urls.py文件,进行视图与url之间的映射,示例代码如下:
  1. from django.urls import path
  2. from.views import MessageBoard_view
  3. app_name = 'front'
  4. urlpatterns = [
  5. path('', MessageBoard_view.as_view(), name='index'),
  6. ]
(5)在项目中的urls.py中进行主url与子url之间的映射,示例代码如下:
  1. from django.urls import path, include
  2. urlpatterns = [
  3. path('front/', include('front.urls')),
  4. ]

118.django中表单的使用方式的更多相关文章

  1. Django中表单的用法深探

    [转载说明:原文排版不是很好,为方便阅读,改进了排版] django的表单设计真的很棒,涉及非常多的功能,今天介绍django较为主流的几种表单使用方法.注:本文中表单与form通用.模型与model ...

  2. django中表单处理

    在web端与后端交互时,我们除了使用html原生的form标签,还可以使用django自带的表单. Django 提供广泛的工具和库来帮助你构建表单来接收网站访问者的输入,然后处理以及响应输入. HT ...

  3. Django表单介绍

    HTML 表单 在HTML中,表单是<form>...</form> 之间元素的集合,它们允许访问者输入文本.选择选项.操作对象和控制等等,然后将信息发送回服务器. 某些表单的 ...

  4. python3之Django表单(一)

    1.HTML中的表单 在HTML种,表单是在<form>...</form>种的元素,它允许用户输入文本,选择选项,操作对象等,然后发送这些数据到服务器 表单元素允许用户在表单 ...

  5. 第四章:Django表单 - 3:Django表单字段汇总

    Field.clean(value)[source] 虽然表单字段的Field类主要使用在Form类中,但也可以直接实例化它们来使用,以便更好地了解它们是如何工作的.每个Field的实例都有一个cle ...

  6. 关于struts2中表单提交时,中文乱码问题的解决

    http://blog.csdn.net/hjw506848887/article/details/8966194 今天写项目时,突然遇到了struts2中表单提交的中文乱码问题,调了好久就是不知道答 ...

  7. HTML5中表单验证的8种方法(转)

    在深人探讨表单验证之前,让我们先思考一下表单验证的真实含义.就其核心而言,表单验证是一套系统,它为终端用户检测无效的控件数据并标记这些错误.换言之,表单验证就是在表单提交服务器前对其进行一系列的检查并 ...

  8. form表单的提交方式

    开发中表单提交是很常见的,表单的提交方式也多种方式. 1.使用submit按钮提交表单  <input type="submit"/> <!DOCTYPE htm ...

  9. python 全栈开发,Day108(客户管理之权限控制,客户管理之动态"一级"菜单,其他应用使用rbac组件,django static文件的引入方式)

    一.客户管理之权限控制 昨天的作业,有很多不完善的地方 下载代码,基本实现权限验证 https://github.com/987334176/luffy_permission/archive/v1.2 ...

随机推荐

  1. 工具 - gravatar保存头像

    流程 注册账号,上传头像 https://secure.gravatar.com/avatar/ 就可以获取到头像 参数 例子flasky git reset --hard 10c def grava ...

  2. Java基础知识笔记第三章:运算符表达式语句

    算术运算符与表达式 操作符 描述 例子 + 加法 - 相加运算符两侧的值 A + B 等于 30 - 减法 - 左操作数减去右操作数 A – B 等于 -10 * 乘法 - 相乘操作符两侧的值 A * ...

  3. 牛客挑战赛36 G Nim游戏(分治FWT)

    https://ac.nowcoder.com/acm/contest/3782/G 题解: 分治FWT裸题. 每个都相当于\((1+b[i]x^{a[i]})\),求这玩意的异或卷积. 先把a[i] ...

  4. DAC

    DAC的功能:可以输出电压(无触发,设置DAC转换值,DAC使能更新寄存器和启动转换)或者波形(连续转换,用DMA发送数据,定时器触发).首先有个正弦波波形的数组,内存到DAC的DMA通道不断的将正弦 ...

  5. 【PAT甲级】1036 Boys vs Girls (25 分)

    题意: 输入一个正整数N(题干没指出范围,默认1e5可以AC),接下来输入N行数据,每行包括一名学生的姓名,性别,学号和分数.输出三行,分别为最高分女性学生的姓名和学号,最低分男性学生的姓名和学号,前 ...

  6. cookie、 Session Storage 、 Local Storage

    问题描述: 使用Ajax, Controller 传回来 JSON 字符串(待处理的信息) 在 Ajax 中实现页面跳转 window.location.href="/jsp/index.j ...

  7. YUV 和 YCbCr 辨析

    YCbCr或Y'CbCr 是在世界数字组织视频标准研制过程中作为ITU-R BT1601 建议的一部分, 其实是YUV经过缩放和偏移的翻版. 通常会用于影片中的影像连续处理,或是数字摄影系统中. 其中 ...

  8. redhat 7.6 安装 inotify-tools 文件监控工具 搭配rsync

    1.解压inotify-tools tar -zxvpf inotify-tools-3.14.tar.gz 2.cd 到解压的目录 3../configure  编译,然后失败,提示checking ...

  9. VBS 脚本对象

    Dictionary对象(1) 1.        属性: a)        compareMode b)       count c)        key d)       item 2.    ...

  10. OPCDA通信--工作在透明模式下的CISCO ASA 5506-X防火墙配置

    尊重原创,转发请声名 inside OPCSERVER 一台 outside OPCCLIENT 一台 route模式 配置没成功,放弃,采用透明模式 !----进入全局配置-- configure ...