惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Last Week in AI
Last Week in AI
阮一峰的网络日志
阮一峰的网络日志
P
Proofpoint News Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
MongoDB | Blog
MongoDB | Blog
云风的 BLOG
云风的 BLOG
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
J
Java Code Geeks
WordPress大学
WordPress大学
T
The Blog of Author Tim Ferriss
V
Visual Studio Blog
小众软件
小众软件
Microsoft Azure Blog
Microsoft Azure Blog
博客园_首页
IT之家
IT之家
Vercel News
Vercel News
C
Check Point Blog
Google DeepMind News
Google DeepMind News
月光博客
月光博客
D
DataBreaches.Net
酷 壳 – CoolShell
酷 壳 – CoolShell
美团技术团队
Y
Y Combinator Blog
Hugging Face - Blog
Hugging Face - Blog

碎言

不懂就别瞎掰掰:【程序员的常识】写的什么玩意? AI 辅助编程下的程序设计与代码编写 使用 Next.js 和 Tailwind CSS 构建可编辑和删除的 ToDo 待办事项应用 探索编程新境界:MarsCode 助你一臂之力 使用 Next.js 和 Tailwind CSS 搭建静态图片展示站点并部署到 Vercel AI 辅助编程:免费工具的优缺点及官网一览 GitHub push更新总是失败,写个python脚本解决 把博客从GitHub迁移到到了vercel ComfyUI 和 Flux.1 安装与使用教程 Flux.1 入门必知:硬件、环境、模型 Git项目的子文件夹中的内容无法同步到远程仓库的解决方法 blender流体Fluid使用中没有流体、流体穿模等一些问题的解决方法 博客聚合网站:积薪,竟然关闭了! blender日常使用中的一些技巧 虽然只有我自己在用,但还是更新了碎言博客的源代码, 与其在迷茫中困惑,不如在努力中前进 差点忘了我还有一个博客... 秧歌、博客和AI 终于熬到了新手上路 好久没有更新博客了。。。 老妈大腿骨骨折,最近一直在医院护理 Hello, September! Ubuntu开机自动启动Docker容器运行WordPress Docker 简单快速安装部署WordPress Docker下安装MySQL 加碘盐能防核辐射的话,还怕什么核战争? shields.io 一个简洁、一致、清晰的徽章 Ubuntu下使用root登录ssh的设置 GitHub Actions 构建、部署 Next.js项目 我又用回了"IE"--edge
Django 4.2 复习笔记(九)Django Forms 使用表单
J.sky · 2023-06-11 · via 碎言

在web日常中表单是必不可少的,处理数据的输入与交互在web站点中是非常重要的,Django提供了一系列的工具和库来帮助您构建表单来接收网站访客的输入,然后处理以及响应这些输入。

HTML表单

表单在HTML使用<form></form>标签包围,它包括很多表单标签,例如输入框、单选和多选框、文本输入域等,处理表单是通过get或post方法来传输数据,在表单的action中指定一个URL,数据会提交到这个URL来进行响应,其中get会明文以键值方式,通过URL地址来发送表单中的数据。

使用Django的表单

Django中使用表单是非常简单的,甚至可以不用去写任何的HTML,Django封装大量的常用表单,只需要配置表单的相关选项即可使用。

构建Form 类

在使用Django表单前需要创建相关表单的类,例如:

from django import forms

class ArticleForm(forms.Form):
    title = forms.CharField(label="title", max_length=100)
    content = forms.CharField(widget=forms.Textarea(attrs={'rows':'5'}))

引入Django表单类forms,创建表单类,创建字段并设置字段的属性和widget,上边定义了两个字段。

视图中使用表单

def test_form(request):
    if request.method == 'POST':
        form = ArticleForm(request.POST)
        if form.is_valid():
            return HttpResponseRedirect("/show/")
    else:
        form = ArticleForm()
        return render(request, "test_form.html", {'form': form})


def show(request):
if request.method == "POST":
    # print(request.POST)
    title = request.POST.get('title')
    content = request.POST.get('content')
    return HttpResponse("title:"+title+"</br>content:"+content)

test_form负责创建表单,form = ArticleForm({'title':'11','content':'222'})可以预填充表单的内容。

show用来响应并接收表单发来的数据,用来展示数据。

设置路由

path("test_form/", views.test_form, name="test_form"),
path("show/", views.show, name="show"),

然后运行Django的服务器,打开http://127.0.0.1:8000/myapp/test_form/,提交数据,在show的页面显示数,类似下边:

title:11
content:222

总结

至此,一个表单的完整使用就基本设置完成,表单类和飙到的小部件还有很多的属性,这里就不一一介绍了,可以参考下边的网址。

参考网站:

使用表单

表单 AP

Widgets 小部件

使用Request and response表单