当前位置: 首页 > news >正文

Django学习笔记-表单(forms)的使用

在Django中提供了了form表单,可以更为简单的创建表单模板信息,简化html的表单。

一、网页应用程序中表单的应用

表单通常用来作为提交数据时候使用。

1.1 创建表单模板文件夹

在项目文件夹下创建一个template文件夹,用于存储所有的html模板文件。

1.2 在文件夹下创建对应的html模板文件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>User Name</title>
</head>
<body><form><label for="name">名字</label><input type="text" id="name" name = "name" maxlength="10" required/><label for="phone">电话</label><input id="phone" type="text" name="phone" maxlength="11" required/></form>
</body>
</html>

1.3 添加模板文件路径到settings.py文件中

填写项目的相对路径即可。

 1.4 路由设置

在app中views.py文件中添加响应函数:

def get_person(request):"""method of re match"""return render(request,"person.html")

在urls.py添加路由设置

urlpatterns = [path('test/2023', serverapp_views.test),        # 精确匹配path('converter/<int:num>', serverapp_views.converter),         # 格式转换re_path(r'^re/(?P<num>[0-9]{1,4})/$', serverapp_views.rematch),         # 正则表达式,通过添加起止符限制匹配,避免中间多级路径后匹配到,造成错误匹配。path('person', serverapp_views.get_person),        # 获取人员信息
]

1.5 访问表单

直接浏览器通过“http://127.0.0.1:8000/serverapp/person” 访问:

二、使用Django的forms表单替换html的表单

2.1 在App中创建一个forms.py文件统一管理表单

 2.2 创建表单类PersonForm

定义的属性就对应表单中的每一项。

# _*_ coding:utf-8 _*_from django import formsclass PersonForm(forms.Form):"""人员表单类"""name = forms.CharField(label="name", max_length=10)phone = forms.CharField(label="phone", max_length=11)

 2.3 修改html模块,用form替代HTML字待的表单

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>User Name</title>
</head>
<body><!--action 是访问的url--><form action="/serverapp/views/get_personform" method="post">{% csrf_token %}        <!--防止跨域攻击-->{{ personform }}        <!--引用表单,views函数中定义的名称一致--><button type="submit">提交</button></form>
</body>
</html>

2.4 views.py中定义函数引用表单

通过路由处理函数可以对访问信息进行识别,获取表单的基本信并进行处理。

def get_personform(request):"""method of re match"""if request.method == "POST":# 获取表单form = PersonForm(request.POST)# 判断是否为有效表单if form.is_valid():# 使用cleaned_data获取请求数据name = form.cleaned_data["name"]phone = form.cleaned_data["phone"]# 返回数据return HttpResponse(f"Data is :\r\n name:{name}\r\nphone:{phone}")else:return HttpResponseRedirect("/error/")# Get方法访问else:# 重定向到登录表单页面return render(request, "personform.html", {'personform':PersonForm()})

2.5 添加路径到urls.py中

from django.urls import path,re_path
from serverapp import views as serverapp_viewsurlpatterns = [path('test/2023', serverapp_views.test),        # 精确匹配path('converter/<int:num>', serverapp_views.converter),         # 格式转换re_path(r'^re/(?P<num>[0-9]{1,4})/$', serverapp_views.rematch),         # 正则表达式,通过添加起止符限制匹配,避免中间多级路径后匹配到,造成错误匹配。path('person', serverapp_views.get_person),        # 获取人员信息path('personform', serverapp_views.get_personform),        # 使用表单获取人员信息
]

2.6 访问表单

放到后直接获取到表单模板。

 输入后提交数据:

http://www.lryc.cn/news/99765.html

相关文章:

  • 机器学习分布式框架ray运行TensorFlow实例
  • QT【day4】
  • java中方法相关知识点详解
  • 【算法训练营】Fibonacci数列+合法括号序列判断+两种排序方法
  • 【Rasa】入门案例学习
  • 基于java的坦克大战游戏的设计与实现--开题报告--【毕业论文】
  • 学习笔记|百度文心千帆大模型平台测试及页面交互简易代码
  • Python中的数据科学实验库有哪些?
  • 区间预测 | MATLAB实现QRLSTM长短期记忆神经网络分位数回归多输入单输出区间预测
  • Pytorch nn.Linear的基本用法与原理详解
  • 数据结构:栈和队列的实现和图解二者相互实现
  • 深入理解C++命名空间
  • <MySQL>建表SQ和CRUD SQ脚本案例二
  • webpack基础配置
  • 宝塔面板Django项目部署(无数据库版)
  • windows默认编码格式修改
  • 原生js vue react通用的递归函数
  • vue指令-v-text和v-html
  • quartus工具篇——PLL IP核的使用
  • [Angular] Import TranslateModule in Angular 16
  • Web自动化测试高级定位xpath
  • 2023河南萌新联赛第(二)场:河南工业大学 F - 最短距离
  • 前端文件上传实践与后端处理——文件分块上传
  • SFP6012A-ASEMI代理海矽美快恢复二极管参数、尺寸、规格
  • githack的安装步骤+一次错误体验
  • 【Spring框架】SpringBoot创建和使用
  • 【C语言项目】多臂井径电子测井成像项目(一)
  • 力扣 56. 合并区间
  • 前端开发Vue3.0 标签setup语法『UI组件库』之『模态框』【业务提升必备】
  • 在CSDN学Golang云原生(Kubernetes二开)