Django Form表单,常用表单字段

        在Django中,表单(Forms)是处理用户输入数据的重要工具。Django提供了两种主要方式来创建和处理表单:使用Django的表单API手动创建表单,或者使用模型表单(ModelForms)自动从数据库模型生成表单。

表单字段作用
forms.CharField
在Django中,forms.CharField是用于创建Web表单的字段类型,它允许用户输入文本数据。当你在Django中创建一个表单时,你可以使用forms.CharField来定义一个文本输入框,用户可以在其中输入字符串。
forms.IntegerField
在Django中,forms.IntegerField是用于创建Web表单的字段类型,它允许用户输入整数值。当你在Django中创建一个表单时,你可以使用forms.IntegerField来定义一个字段,该字段期望用户输入一个整数
forms.FloatField
在Django中,forms.FloatField 是一个用于创建Web表单的字段类型,它允许用户输入浮点数值。当你在Django中创建一个表单时,你可以使用 FloatField 来定义一个字段,该字段期望用户输入一个浮点数。
forms.DecimalField
在Django中,forms.DecimalField 是一个用于创建Web表单的字段类型,它允许用户输入固定精度的十进制数值。当你在Django中创建一个表单时,你可以使用 DecimalField 来定义一个字段,该字段期望用户输入一个十进制数,并且你可以指定这个数值的最大位数(包括小数点两边的数字)和小数点后的位数。
forms.ChoiceField
在Django中,forms.ChoiceField 是一个用于创建Web表单的字段类型,它允许用户从一个预定义的选项列表中选择一个值。当你在Django中创建一个表单时,你可以使用 ChoiceField 来定义一个字段,该字段提供一个下拉菜单或单选按钮组,用户可以从中选择一个选项。
forms.FileField
在Django中,forms.FileField 是一个用于创建Web表单的字段类型,它允许用户上传文件。当你在Django中创建一个表单时,你可以使用 FileField 来定义一个字段,该字段期望用户选择一个文件并上传。
forms.BooleanField
在Django中,forms.BooleanField 是一个用于创建Web表单的字段类型,它允许用户输入布尔值(即 True 或 False)。当你在Django中创建一个表单时,你可以使用 BooleanField 来定义一个字段,该字段提供一个复选框,用户可以通过选中或不选中复选框来表示布尔值。
forms.DateField
在Django中,forms.DateField 是一个用于创建Web表单的字段类型,它允许用户输入日期值。当你在Django中创建一个表单时,你可以使用 DateField 来定义一个字段,该字段期望用户输入一个日期。
forms.DateTimeField
在Django中,forms.DateTimeField 是一个用于创建Web表单的字段类型,它允许用户输入日期和时间值。当你在Django中创建一个表单时,你可以使用 DateTimeField 来定义一个字段,该字段期望用户输入一个日期和时间。
forms.EmailField
在Django中,forms.EmailField 是一个用于创建Web表单的字段类型,它允许用户输入电子邮件地址。当你在Django中创建一个表单时,你可以使用 EmailField 来定义一个字段,该字段期望用户输入一个有效的电子邮件地址。
forms.URLField
在Django中,forms.URLField 是一个用于创建Web表单的字段类型,它允许用户输入URL地址。当你在Django中创建一个表单时,你可以使用 URLField 来定义一个字段,该字段期望用户输入一个有效的URL。
ModelChoiceField
在Django中,ModelChoiceField 是一个用于Django表单的特殊字段类型,它允许用户从一个模型查询集(queryset)中选择一个或多个项。这个字段通常用于创建下拉菜单或单选按钮组,其中选项来自于数据库中的模型实例。

1,添加模型

Test/app14/models.py

from django.db import modelsclass Country(models.Model):name = models.CharField(max_length=100)code = models.CharField(max_length=2)def __str__(self):return self.nameclass UserInfo(models.Model):first_name = models.CharField(max_length=100)last_name = models.CharField(max_length=100)email = models.EmailField()age = models.IntegerField()bio = models.TextField()is_subscribed = models.BooleanField(default=False)country = models.CharField(max_length=100)agree_terms = models.BooleanField()interest = models.TextField()favorite_number = models.FloatField()pi_value = models.DecimalField(max_digits=5, decimal_places=2)resume = models.FileField(upload_to='resumes/')birth_date = models.DateField()registration_time = models.DateTimeField()website = models.URLField()country_model = models.ForeignKey('Country', on_delete=models.SET_NULL, null=True)def __str__(self):return self.first_name + ' ' + self.last_name

2,添加视图函数

Test/app14/views.py

from django.shortcuts import render, redirect
from .forms import UserInfoForm
from .models import UserInfo
import loggingdef user_info_form_view(request):if request.method == 'POST':form = UserInfoForm(request.POST, request.FILES)if form.is_valid():# 创建模型实例user_info = UserInfo()# 从表单中获取已清洗的数据并赋值给模型实例user_info.first_name = form.cleaned_data['first_name']user_info.last_name = form.cleaned_data['last_name']user_info.email = form.cleaned_data['email']user_info.age = form.cleaned_data['age']user_info.bio = form.cleaned_data['bio']user_info.is_subscribed = form.cleaned_data['is_subscribed']user_info.country = form.cleaned_data['country']user_info.agree_terms = form.cleaned_data['agree_terms']user_info.interest = form.cleaned_data['interest']user_info.favorite_number = form.cleaned_data['favorite_number']user_info.pi_value = form.cleaned_data['pi_value']user_info.resume = form.cleaned_data['resume']user_info.birth_date = form.cleaned_data['birth_date']user_info.registration_time = form.cleaned_data['registration_time']user_info.website = form.cleaned_data['website']try:# 保存模型实例到数据库user_info.save()# 重定向到成功页面或返回响应return redirect('success_url')except Exception as e:# 如果发生错误,打印错误信息并返回表单页面logging.error(f"Error saving user info: {e}")return render(request, '14/user_info_form.html', {'form': form})else:# 如果表单无效,重新渲染表单页面return render(request, '14/user_info_form.html', {'form': form})else:# 如果请求不是POST,创建一个空表单form = UserInfoForm()# 渲染表单页面return render(request, '14/user_info_form.html', {'form': form})

3,添加HTML代码

Test/templates/14/user_info_form.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>User Info Form</title>
</head>
<body><h1>User Information Form</h1><form method="post" enctype="multipart/form-data">{% csrf_token %}{{ form.as_p }}<button type="submit">Submit</button></form>
</body>
</html>

4,添加路由地址

Test/app14/urls.py

from django.urls import path
from . import views
from django.conf import settings
from django.conf.urls.static import staticurlpatterns = [path('my_form_view/', views.my_form_view, name='my_form_view'),path('upload_document/', views.upload_document, name='upload_document'),path('success/', views.success_view, name='success_url'),path('user_info_form_view/', views.user_info_form_view, name='user_info_form_view'),] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

5,执行迁移

python manage.py makemigrations app14python manage.py migrate app14

插入数据

select * from app14_country ac ;INSERT INTO db1.app14_country
(id, name, code)
VALUES(1, '中国', 'cn');
INSERT INTO db1.app14_country
(id, name, code)
VALUES(2, '美国', 'US');

6,访问页面

http://127.0.0.1:8000/app14/user_info_form_view/

http://127.0.0.1:8000/app14/success/

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1489266.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

[SaaS] 盒马设计->AI如何为企业经营创造价值

D20【AIGC x 零售】AI设计如何为企业经营创造价值&#xff1f;AIGC能力不仅仅是设计师的效率工具&#xff0c;也可以当好企业的大脑&#xff0c;帮助构建企业自己的数字化设计工作流&#xff0c;让设计资产和数据发挥更大价值https://mp.weixin.qq.com/s/tk1ahorN_yQ0N-RTZ2U9x…

【告别截图烦恼】4款超神截图软件,让你的设计工作飞起来!

你是否还在为截图时的繁琐操作头疼&#xff1f;网页内容截不全&#xff0c;图片模糊不清&#xff0c;或是在图层中翻找素材时手忙脚乱&#xff1f;今天&#xff0c;米兔要带你摆脱这些烦恼&#xff0c;介绍四款让你事半功倍的截图软件&#xff01; 1. Snipaste&#xff1a;简单…

ArrayList底层原理

1. ArrayList 的基本结构 ArrayList 内部使用一个 Object 类型的数组 elementData 来存储所有的元素。数组的长度可以动态调整。 2. 初始容量和扩容机制 初始容量&#xff1a;当使用无参构造创建一个 ArrayList 实例时会在底层创建一个默认长度为0的数组&#xff0c;可以通过…

解决vscode+UE5中vscode无法识别头文件,无法函数无法跳转,也无法自动补全的问题。

一、概述 接上一条博客&#xff0c;虽然解决了报错的问题&#xff0c;但是实际上的问题却没有解决&#xff0c;无论我怎么点击&#xff0c;其都无法完成跳转&#xff0c;也无法完成自动补全的问题。 在网络上搜索了很多资料后&#xff0c;发现是在使用vscode时候UE5在vscode中的…

masscan 端口扫描——(Golang 简单使用总结)

1. 前言 最近要做一个扫描 ip 端口的功能 扫描的工具有很多&#xff0c;但是如何做到短时间扫描大量的 ip 是个相对困难的事情。 市场上比较出名的工具有 masscan和nmap masscan 支持异步扫描&#xff0c;对多线程的利用很好&#xff0c;同时仅仅支持 syn 半开扫描&#xff…

大模型深度神经网络(Deep Neural Network, DNN)

大模型深度神经网络&#xff08;Deep Neural Network, DNN&#xff09;是一种复杂的机器学习模型&#xff0c;其特点在于包含多个隐藏层&#xff0c;从而赋予模型强大的非线性表达能力和对复杂数据模式的学习能力。以下是对大模型DNN的详细介绍&#xff1a; 一、基本概念 深度…

AR 眼镜之-充电动画定制-实现方案

目录 &#x1f4c2; 前言 AR 眼镜系统版本 充电动画 1. &#x1f531; 技术方案 1.1 方案介绍 1.2 实现方案 关机充电动画 亮屏/锁屏充电动画 2. &#x1f4a0; 关机充电动画 2.1 关机充电动画核心处理类与路径 2.2 实现细节 步骤一&#xff1a;1&#xff09;定制 …

Mac printf处理参数的奇特之处(macOS中,printf使用%d输出一个浮点数会发生什么情况?)

今天早上网上冲浪的时候看到了 2016 年的一篇文章&#xff0c;里面提到了一段代码&#xff1a; #include <stdio.h> int main() {double a 10;printf("a %d\n", a);return 0; }说这段代码在 x86&#xff08;IA-32&#xff09;上运行时&#xff0c;输出为0&a…

通过 C# 写入数据到Excel表格

Excel 是一款广泛应用于数据处理、分析和报告制作的电子表格软件。在商业、学术和日常生活中&#xff0c;Excel 的使用极为普遍。本文将详细介绍如何使用免费.NET库将数据写入到 Excel 中&#xff0c;包括文本、数值、数组、和DataTable数据的输入。 文章目录 C# 在Excel单元格…

算法-----递归~~搜索~~回溯(宏观认识)

目录 1.什么是递归 1.1二叉树的遍历 1.2快速排序 1.3归并排序 2.为什么会用到递归 3.如何理解递归 4.如何写好一个递归 5.什么是搜索 5.1深度&#xff08;dfs&#xff09;优先遍历&优先搜索 5.2宽度&#xff08;bfs&#xff09;优先遍历&优先搜索 6.回溯 1.什…

GD 32 流水灯

前言&#xff1a; 通过后面的学习掌握了一些逻辑架构的知识&#xff0c;通过复习的方式将学到的裸机任务架构的知识运用起来&#xff0c;同时巩固前面学到的知识&#xff0c;GPIO的配置等。 开发板上LED引脚使用示意图 注&#xff1a;此次LED灯的点亮凡是是高电平点亮&#xff…

计科录取75人!常州大学计算机考研考情分析!

常州大学&#xff08;Changzhou University&#xff09;&#xff0c;简称“常大”&#xff0c;位于江苏省常州市&#xff0c;是江苏省人民政府与中国石油天然气集团有限公司、中国石油化工集团有限公司及中国海洋石油集团有限公司共建的省属全日制本科院校&#xff0c;为全国深…

AIoTedge边缘物联网平台,开启智能物联新架构

边缘物联网平台是一种将计算能力、数据处理和应用服务部署在网络边缘的解决方案&#xff0c;旨在提高响应速度、降低带宽需求和增强数据安全。根据搜索结果&#xff0c;边缘物联网平台应具备以下功能&#xff1a; 云边协同&#xff1a; 云边一体架构&#xff0c;通过云端管理边…

PHP家政系统自营+多商户独立端口系统源码小程序

家政行业的新篇章 引言&#xff1a;家政行业的数字化转型 近年来&#xff0c;随着科技的飞速发展和人们生活节奏的加快&#xff0c;家政服务行业也迎来了数字化转型的浪潮。为了提升服务效率、优化用户体验&#xff0c;越来越多的家政公司开始探索“家政系统自营多商户小程序…

Tomcat中的WebSocket是如何实现的?

Tomcat中的WebSocket是如何实现的&#xff1f; WebSocket是一种在客户端和服务器之间提供长期、双向、实时通信的协议 全双工通信&#xff1a;WebSocket允许数据同时在客户端和服务器双向通信&#xff0c;无需像HTTP等待请求和响应的循环 单个TCP连接&#xff1a;建立一次连…

解答|需要通过等保测评、密评的SSL证书应考虑哪些因素?

随着数字化转型的深入&#xff0c;网络安全成为了企业发展的基石。在中国&#xff0c;网络安全等级保护制度&#xff08;简称“等保”&#xff09;和密码安全性评估&#xff08;简称“密评”&#xff09;是确保信息系统安全的重要标准。在这一背景下&#xff0c;选择SSL证书时需…

html+css 实现悬浮按钮

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽效果&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 文…

F4A0手把手教程1: 华大单片机HC32F4A0如何新建工程(ddl库版本)

开发板请点击&#xff1a;https://item.taobao.com/item.htm?spma21n57.1.item.3.5fc760c3ycChCu&priceTId2150418a17219238749041878ec06d&utparam%7B%22aplus_abtest%22:%222166044947a45798ae4c3d102fcea719%22%7D&id707262644934&ns1&abbucket20 准备…

【ffmpeg命令入门】Nginx的安装与制作HLS流媒体服务器

文章目录 前言Nginx简介Ubuntu安装Nginxffmpeg生成HLS流媒体1. 生成HLS流媒体命令说明 配置Nginxffplay播放m3u8 总结 前言 在数字内容传输和流媒体服务中&#xff0c;HLS&#xff08;HTTP Live Streaming&#xff09;已经成为一种流行的解决方案&#xff0c;特别是在视频直播…

电缆规格型号对照表

一、电线电缆产品主要分为五大类: 1、裸电线及裸导体制品本类产品的主要特征是&#xff1a;纯的导体金属&#xff0c;无绝缘及护套层&#xff0c;如钢芯铝绞线、铜铝汇流排、电力机车线等&#xff1b;加工工艺主要是压力加工&#xff0c;如熔炼、压延、拉制、绞合/紧压绞合等&…