Django 4.2 复习笔记(九)Django Forms 使用表单

作者:J.sky · 发表于:
2023-06-11T08:43:25.000000Z
· 更新于:
2023-08-13T22:54:57.619618Z
· Tag: Django

在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表单