118.django中表单的使用方式
表单
HTML中的表单:
从前端来说,表单就是用来将数据提交给服务器的,不管后台使用的是django还是php等其他的语言。只要把input标签放在form标签中,然后再添加一个提交的按钮,就可以将input标签中对应的值提交给服务器。
Django中的表单:
Django中的表单丰富了传统的html语言中的表单,在Django中的表单主要有以下两个作用:
(1)渲染表单模板
(2)表单验证数据是否合法。
Django中表单使用流程:
首先我们以一个留言板为例。简单的介绍一下Django中表单的使用流程。
(1)首先在项目中的APP中新建一个python文件forms.py,在forms.py文件中就可以定义我们的表单模板了。示例代码如下:
from django import forms
class MessageBoard(forms.Form):
title = forms.CharField(max_length=100, min_length=2, label='标题', error_messages={'invalid': '您输入形式不合法'})
content = forms.CharField(widget=forms.Textarea, label='内容')
email = forms.EmailField(label='邮箱')
reply = forms.BooleanField(required=False, label='是否需要回复')
(2)在views.py文件中,应用form表单,进行验证数据是否合法,使用GET请求返回定义的Django模板页面;采用POST请求,如果验证数据合法,就获取提交上来的数据,否者的话,就返回HttpResponse提示用户失败。示例代码如下:
from django.shortcuts import render
from django.http import HttpResponse
from django.views import View
from .forms import MessageBoard
from django.forms.utils import ErrorDict
class MessageBoard_view(View):
def get(self,request):
form = MessageBoard()
return render(request, 'front/index.html', context={'form': form})
def post(self,request):
form = MessageBoard(request.POST)
if form.is_valid():
title = form.cleaned_data.get('title')
content = form.cleaned_data.get('content')
email = form.cleaned_data.get('email')
reply = form.cleaned_data.get('reply')
print(title)
print(content)
print(email)
print(reply)
return HttpResponse('success')
else:
# print(type(form.errors))
# <class 'django.forms.utils.ErrorDict'>
# 打印出显示的错误信息,字典形式显示
print(form.errors.get_json_data())
return HttpResponse('Fail')
(3)在index.html中将Django表单进行渲染。在table标签中对我们实例化的form对象使用as_table方法就可以将我们定义在forms.py文件中各个字段渲染成table表中的tr,td标签进行显示,在form标签中写入一个submit的input标签就可以将我们在浏览器中输入的信息采用POST请求,提交至后台,示例代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Django中表单的使用流程</title>
</head>
<body>
<form action="" method="post">
<table>
{{ form.as_table }}
<tr>
<td></td>
<td><input type="submit" value="提交"></td>
</tr>
</table>
</form>
</body>
</html>
(4)在APP中创建文件urls.py文件,进行视图与url之间的映射,示例代码如下:
from django.urls import path
from.views import MessageBoard_view
app_name = 'front'
urlpatterns = [
path('', MessageBoard_view.as_view(), name='index'),
]
(5)在项目中的urls.py中进行主url与子url之间的映射,示例代码如下:
from django.urls import path, include
urlpatterns = [
path('front/', include('front.urls')),
]
118.django中表单的使用方式的更多相关文章
- Django中表单的用法深探
[转载说明:原文排版不是很好,为方便阅读,改进了排版] django的表单设计真的很棒,涉及非常多的功能,今天介绍django较为主流的几种表单使用方法.注:本文中表单与form通用.模型与model ...
- django中表单处理
在web端与后端交互时,我们除了使用html原生的form标签,还可以使用django自带的表单. Django 提供广泛的工具和库来帮助你构建表单来接收网站访问者的输入,然后处理以及响应输入. HT ...
- Django表单介绍
HTML 表单 在HTML中,表单是<form>...</form> 之间元素的集合,它们允许访问者输入文本.选择选项.操作对象和控制等等,然后将信息发送回服务器. 某些表单的 ...
- python3之Django表单(一)
1.HTML中的表单 在HTML种,表单是在<form>...</form>种的元素,它允许用户输入文本,选择选项,操作对象等,然后发送这些数据到服务器 表单元素允许用户在表单 ...
- 第四章:Django表单 - 3:Django表单字段汇总
Field.clean(value)[source] 虽然表单字段的Field类主要使用在Form类中,但也可以直接实例化它们来使用,以便更好地了解它们是如何工作的.每个Field的实例都有一个cle ...
- 关于struts2中表单提交时,中文乱码问题的解决
http://blog.csdn.net/hjw506848887/article/details/8966194 今天写项目时,突然遇到了struts2中表单提交的中文乱码问题,调了好久就是不知道答 ...
- HTML5中表单验证的8种方法(转)
在深人探讨表单验证之前,让我们先思考一下表单验证的真实含义.就其核心而言,表单验证是一套系统,它为终端用户检测无效的控件数据并标记这些错误.换言之,表单验证就是在表单提交服务器前对其进行一系列的检查并 ...
- form表单的提交方式
开发中表单提交是很常见的,表单的提交方式也多种方式. 1.使用submit按钮提交表单 <input type="submit"/> <!DOCTYPE htm ...
- python 全栈开发,Day108(客户管理之权限控制,客户管理之动态"一级"菜单,其他应用使用rbac组件,django static文件的引入方式)
一.客户管理之权限控制 昨天的作业,有很多不完善的地方 下载代码,基本实现权限验证 https://github.com/987334176/luffy_permission/archive/v1.2 ...
随机推荐
- 软件架构,WEB - REST架构,RESTful API
参考 https://www.zhihu.com/question/27785028/answer/48096396 wiki太学术化了 http://www.ruanyifeng.com/blog/ ...
- Caffe2 手写字符识别(MNIST - Create a CNN from Scratch)[8]
本教程创建一个小的神经网络用于手写字符的识别.我们使用MNIST数据集进行训练和测试.这个数据集的训练集包含60000张来自500个人的手写字符的图像,测试集包含10000张独立于训练集的测试图像.你 ...
- 【转】Python中*args和**kwargs的区别
一.*args的使用方法 *args 用来将参数打包成tuple给函数体调用 例子一: 输出结果以元组的形式展示 def function(*args): print(args, type(args) ...
- Linu计划任务/crontab命令
周期性任务计划 相关程序包: cronie:主程序包,提供了crond守护进程及相关辅助工具 cronie-anacron:cronie的补充程序:用于监控cronie任务执行状况:如cronie中的 ...
- 问题解决 : org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
问题分析: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): ,即在mybatis中da ...
- Centos7 使用yum安装MariaDB与MariaDB的简单配置与使用
一.mariadb的安装 MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可. 开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜 ...
- UniGUI之ServerModule常用设置(07)
主要有两个设置,它是一个单独的, 这意味着它只在每个应用程序中创建一次. 它主要用于配置各种服务器设置.不能将组件放在ServerModule上. 如前所述, ServerModule 是一个单一的, ...
- Python - ORM(数据库相关)
1. 概念 目标:类/对象操作 -> SQL语句 -> DB API -> 再在数据库中执行.ORM做前两部,因为ORM本身无法操作数据库.参考:https://baike.baid ...
- Ajax请求回调地狱及解决方案(promise、async和await)
谈及回调地狱发生得情况和解决办法,就必须追溯到原生ajax请求. 先列出服务器提供的数据接口: // 服务器端接口 app.get('/data1', (req, res) => { res.s ...
- Django 3.0中不推荐使用的及已经删除的功能
3.0中不推荐使用的功能 django.utils.encoding.force_text()和smart_text()的别名被弃用.如果您的代码支持Python 2,smart_str()并且 fo ...