这个世界像是蒙着一层白雾,看不清这个世界也看不见自己,只是感觉到脚下还踩着坚实的土地,由此证明自己还活着,除了自己一无所有。
使用表单
以前提交表单内容数据都是在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 + '
' + passowrd)
然后在templates文件夹新建一个login.html文件,内容如下
{% csrf_token %}
{ {login_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/',show,name='show'),
path('login/',index,name='login'),
path('login_success/',login,name='login_success')
]
这个时候添加功能差不多完成了,访问一下看看是不是生成了表单
点击登陆后,返回结果
自动渲染格式
在演示的login.html中,我只是传入了 就自动生成了表单,但是样式还是非常简陋的,这里使用Django提供自带的样式表渲染就可以变得美美哒
将表单渲染成一个表格元素,每个输入框作为一个
标签
将表单的每个输入框包裹在一个
标签内 tags
将表单渲染成一个列表元素,每个输入框作为一个
标签
注意:你要自己手动编写和标签。
比如我现在把login.html文件修改成这样
{% csrf_token %}
{ {login_form.as_p}}
登陆
现在前端显示的表的样式就变成酱紫
手动渲染格式
在希望引用bootstrap时候,需要手动渲染每个地方的样式表,可以通过如下方式进行获取到表的内容,然后进行渲染
使用直接获取方式
可以使用 表单.属性 的方式获取到表单的内容输入
{% csrf_token %}
用户id:{ { login_form.username }}
# 这里的 login_form.username 就是直接从表单中获取到数据,然后可以自己添加样式
密码:{ {login_form.password}}
登陆
使用迭代表方式获取
传入的数据进行迭代
{% csrf_token %}
{% for field in login_form %}
# 这里对传入的表单迭代
{ { field.label_tag }}:{ { field }}
# field 是表单输入的内容,field.label_tag 是表单的样式表
<