Form表单及django的form表单的补充
作者:谷子的 发布时间:2023-07-21 09:40:04
标签:django,form,表单
form 表单中的button按钮
<button>提交</button> :放在form表单中,会有一个提交事件,会提交form数据,
<input type="button" value="提交“> :是一个单纯的按钮,没有任何默认事件,
先匹配url和视图函数
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^login/', views.login),
]
视图函数
def login(request):
if request.method == "POST":
return HttpResponse("OK!")
return render(request,"login.html")
在前端页面的显示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/login/" method="post">
{# csrf_token 在前端会渲染出一个input标签,是一组键值对,键是csrfmiddlewaretoken,值是随机字符串,会随着下面的input标签一起提交,只有这种形式发送post的请求才能被接收,#}
{% csrf_token %}
<p>用户名:<input type="text" name="user"></p>
<p>密码:<input type="password" name="pwd"></p>
<input type="submit">
</form>
</body>
</html>
----上面是正常的使用HTML的原生form表单,
现在使用django提供的form表单,在views里要创建一个类,继承django的forms类,
然后在视图函数中实例化出一个form对象,利用类的字段在前端页面进行显示,
as_p 是把后端所有的字段都显示,定制性不好,可以自定义,利用对象,跟上字段
在views 创键类,
from django.shortcuts import render,HttpResponse
# Create your views here.
#使用django的form类
from django import forms
class LoginForm(forms.Form):
user = forms.CharField()
pwd = forms.CharField()
def login(request):
if request.method == "POST":
return HttpResponse("OK!")
form_obj = LoginForm() -------------------实例化对象,
return render(request,"login.html",{"form_obj":form_obj}) ---传到前端显示
在前端接收,渲染
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/login/" method="post">
{# csrf_token 在前端会渲染出一个input标签,是一组键值对,键是csrfmiddlewaretoken,值是随机字符串,会随着下面的input标签一起提交,只有这种形式发送post的请求才能被接收,#}
{% csrf_token %}
<p>用户名:{{ form_obj.user }}</p> ------------
<p>密 码:{{ form_obj.pwd }}</p> -------------------
<input type="submit">
</form>
</body>
</html>
查看前端的元素,
---前端现在可以输入数据,但后端要对提交的数据要验证,
用到is_valid()的方法,取到提交的所有数据,cleaned_data , 如果有错误信息 用errors,
#使用django的form类
from django import forms
class LoginForm(forms.Form):
user = forms.CharField(max_length=9,min_length=5,error_messages={"required":"必填"})
pwd = forms.CharField()
def login(request):
if request.method == "POST":
#post的请求验证
formobj = LoginForm(request.POST)#拿到所有的提交数据
if formobj.is_valid():#都符合字段要求,
#取出所有符合字段要求的数据,用cleaned_data
print(formobj.cleaned_data)#拿到字典格式的数据
else:
print(formobj.errors)#如果是提交错误的数据,用errors
return HttpResponse("OK!")
form_obj = LoginForm()
return render(request,"login.html",{"form_obj":form_obj})
来源:https://www.cnblogs.com/gyh04541/p/8016369.html


猜你喜欢
- #!/usr/local/bin/php -q author:freemouse <?php // 下面是说明. print (&qu
- 1. 日志的意义日志是个好东西,但却并不是所有人都愿意记,直到出了问题才追悔莫及,长叹一声,当初要是记日志就好了。但记日志却是个技术活,不能
- 我就废话不多说了,直接上代码吧!import numpy as npimport matplotlib.pyplot as pltdef g
- 队、栈和链表一样,在数据结构中非常基础一种数据结构,同样他们也有各种各样、五花八门的变形和实现方式。但不管他们形式上怎么变,队和栈都有其不变
- sql中经常用like进行模糊查询,而模糊查询就要用到百分号“%”,下划线“_”这些通配符,其中“%”匹配任意多个字符,“_”匹配单个字符。
- 一、在CentOS上安装Python31.下载Python3.10源代码文件下载地址:https://www.python.org/down
- [参与测试的浏览器:IE6 / IE7 / IE8 / FF3 / OP10 / SF4 / Chrome2 ][操作系统:Windows]
- 在GitHub上发现一些很有意思的项目,由于本人作为Python的初学者,编程代码能力相对薄弱,为了加强Python的学习,特此利用前辈们的
- 最近需要做一个表格样式,需要组合表头,现在把做出来的分享给大家, 1、效果图2、html代码 <table id="
- 网上搜了很多方法都不奏效,研究了一天,发现通过以下的配置可以完美支持 'URL_MODEL' => 2 的情况了 lo
- 一、PING简介PING(Packet Internet Grope),也称因特网包探索器。PING使用ICMP回送(ECHO)请求和回送(
- 编写断言使用assert编写断言pytest允许你使用python标准的assert表达式写断言;例如,你可以这样做:# test_samp
- 本文实例讲述了sogou地图API应用,是非常实用的技巧。分享给大家供大家参考。具体实现方法如下:地图的初始化1、添加引用地图的API文件:
- 使用del和drop方法删除DataFrame中的列,使用drop方法一次删除多列数据准备:import pandas as pd 
- 相信很多程序员在调试代码时,都用过 print。代码少还好说,如果是大型项目,面对众多 print 的输出结果,可能要头大了。今天推荐一个
- 后台数据库: [Microsoft Access] 与 [Microsoft Sql Server] 更换之后,ASP代码应注意要修改的一些
- 网页情况爬取数据包含歌曲排名、歌手、歌曲名、歌曲时长python 代码import requests #请求网页获取网页数据 f
- 一、用法字符串常量:import stringprint(string.ascii_lowercase)print(string.ascii
- 目录1、环境变量对照表2、使用2.1 Windows2.2 linux2.3 Mac OS3、备注3.1 CGO_ENABLED解释1、环境
- 前言我们知道,enigma机是德军二战中重要的情报加密机器,其有许多特点。首先,它是一台加解密一体机其次,它有排己性,虽然多次输入同一明文可