Django-表单处理

本文详细介绍了如何使用Django处理表单,包括自动和手动渲染格式、处理表单错误信息、上传文件以及各种Field类的使用。通过实例展示了在后端和前端如何操作表单,提供了一种半自动处理表单样式的解决方案。
摘要由CSDN通过智能技术生成

title: Django-表单处理
copyright: true
top: 0
date: 2019-07-08 21:56:35
tags:
categories: WEB 后端框架
permalink:
password:
keywords:
description: 使用Django处理表单内容,非常贴心

这个世界像是蒙着一层白雾,看不清这个世界也看不见自己,只是感觉到脚下还踩着坚实的土地,由此证明自己还活着,除了自己一无所有。

使用表单

以前提交表单内容数据都是在HTML中写一个表单,然后发送到后端,后端进行处理。

但是在Django中变得简单明了,首先在应用的目录下新建一个forms.py

# NHDZ/app/forms.py

# coding:utf-8
from django import forms
import datetime
class Login(forms.Form):
    username = forms.CharField(label='用户名', widget=forms.TextInput, initial='admin', label_suffix=':x:',required=True)
    # 这里设置表单传送过来的数据,并且自动在前端生成表单
    # label 表单的前缀显示  '用户名:'
    # widget   类型为text
    # initial 输入框内的默认值 为 admin
    # label_suffix 后缀,默认是 用户名: 现在变成了  用户名:x:
    # required 给字段添加必填属性,不能空着。

    password = forms.CharField(label='密码', widget=forms.PasswordInput, initial=datetime.date.today(),help_text='在这里输入你的密码')
    # initial 默认值 可以动态获取日期
    # help_text 帮助文档

然后就能在视图中编写登陆部分的功能

# NHDZ/app/login.py

# coding:utf-8
from .froms import Login
from django.shortcuts import render
from django.http import HttpResponse

def index(request):
    # 登陆页面
    login_form = Login()
    # 实例化表单,然后把表单的内容获取后,渲染到html页面
    return render(request, 'login.html', {'login_form': login_form})


def login(request):
    # 登陆验证
    if request.method == 'POST':
        do_login = Login(request.POST)
        # 实例化传递过来的数据
        if do_login.is_valid():
            # 判断数据是否合法
            username = do_login.cleaned_data['username']
            # 这里的 cleaned_data方法可以清洗数据,然后获取数据
            passowrd = do_login.cleaned_data['password']
            return HttpResponse(username + '<br>' + passowrd)

然后在templates文件夹新建一个login.html文件,内容如下

<form action="{%url 'login_success'%}" , method='POST'>
	{% csrf_token %}
	{
  {login_form}}
<button type="submit">登陆</button>
</form>

最后修改一些路由文件urls.py

# NHDZ/app/urls.py

from django.urls import path
from .views import Index,Add_Images,Add_Texts
from .show import show
from .login import index,login
urlpatterns = [
    path('',Index,name='index'),
    path('add_texts/',Add_Texts,name='add_texts'),
    path('add_images/',Add_Images,name='add_images'),
    path('show/<str:user>',show,name='show'),
    path('login/',index,name='login'),
    path('login_success/',login,name='login_success')
]

这个时候添加功能差不多完成了,访问一下看看是不是生成了表单

点击登陆后,返回结果

自动渲染格式

在演示的login.html中,我只是传入了 { {login_form}} 就自动生成了表单,但是样式还是非常简陋的,这里使用Django提供自带的样式表渲染就可以变得美美哒

  1. { { form.as_table }} 将表单渲染成一个表格元素,每个输入框作为一个标签
  2. { { form.as_p }} 将表单的每个输入框包裹在一个

    标签内 tags

  3. { { form.as_ul }} 将表单渲染成一个列表元素,每个输入框作为一个
  4. 标签

注意:你要自己手动编写

  • 标签。

比如我现在把login.html文件修改成这样

<form action="{%url 'login_success'%}" , method='POST'>
	{% csrf_token %}
	{
  {login_form.as_p}}
<button type="submit">登陆</button>

现在前端显示的表的样式就变成酱紫

手动渲染格式

在希望引用bootstrap时候,需要手动渲染每个地方的样式表,可以通过如下方式进行获取到表的内容,然后进行渲染

使用直接获取方式

可以使用 表单.属性 的方式获取到表单的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪子燕青啦啦啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值