【django5】Forms模块

Python版本3.5,django版本1.10

Django自带的Forms模块用于服务器端表单的输入校验,不需要自己再对每个输入格式进行校验。操作如下

1,用户编写自己的类MyForm继承forms,在类中定义字段即“message = forms.CharField()”语句,与数据库类似。Django会自动将该类的实例转化为HTML表单输入语句。

2,在views.py中将表单传来的值赋予自定义类实例,即“form1 = MyForm(request.POST)”,调用forms类自带is_valid()方法判断表单输入是否是自定义类中字段类型,即“form1.is_valid()”,通过cleaned_data属性获取通过检验的数据,即“form1.cleaned_data”。

3,将自定义类实例放在html模板中。

注意:

第1步中form子类中定义字段时,常用属性如下:

        required属性表示该字段是否必填,

        error_messages属性表示错误提示信息,

        max_length属性表示最长输入,

        widget属性表示控件类型,

        label属性表示在html中的label

第2步中视图对输入的处理

        is_valid()方法检查输入,

        errors属性显示不正确的原因,

        若正确cleaned_data属性获取干净数据,

第3步html模板对form实例的引用,若是直接{{form1}},不是特别美观,可以通过访问{{form.字段名}}进行单独的渲染。


示例如下:

1 新建项目

    django-admin.py startproject website3

2 启动服务器,查看是否正常

    manage.py runserver

3 进入工程website3一级文件夹下新建app

    python manage.py startapp account

4 将新建立的app加入工程中

    修改 website3/website3/settings.py的INSTALL_APPS,将app名称加入该元组中。

5 修改website3/urls.py文件

from django.conf.urls import url
from django.contrib import admin
from account import views as account_views

urlpatterns = [
    url(r'^admin/', admin.site.urls),

    url(r'^login/', account_views.login, name='login'),
    url(r'^home/', account_views.home, name='home'),
]

6 在account文件夹下新建forms.py文件

from django import forms

class LoginForm(forms.Form):
	username = forms.CharField(required=True, max_length=20, min_length=6)
	password = forms.CharField(required=True, max_length=20, min_length=6)

7 修改views.py

from django.shortcuts import render
from django.http import HttpResponseRedirect
from .forms import LoginForm
# Create your views here.
def home(request):
	return render(request, 'account/home.html')

def login(request):
	if request.method == 'POST':
		form = LoginForm(request.POST)
		if form.is_valid():
			a = form.cleaned_data['username']
			b = form.cleaned_data['password']
			# 查询数据库进行验证,并放入session进行登陆判断
			return HttpResponseRedirect('/home')
	else:
		form = LoginForm()
	return render(request, 'account/login.html', {'form':form})

或者

from django.shortcuts import render
from django.http import HttpResponseRedirect

from .forms import LoginForm
# Create your views here.
def home(request):
	s = request.session.get('username', default=None)
	return render(request, 'account/home.html', {'username':s})

def login(request):
	if request.method == 'POST':
		form = LoginForm(request.POST)
		if form.is_valid():
			a = form.cleaned_data['username']
			b = form.cleaned_data['password']
			# 查询数据库进行验证,并放入session进行登陆判断
			request.session['username'] = a # 保存用户名在session中  
			return HttpResponseRedirect('/home')
			
	return render(request, 'account/login.html')

8 添加html

login.html

上文中view.py第二个版本对应下面这个html,若用第一个版本则在模板中用{{form.username}}/{{form.password}}代替部分




	
	登陆
	


	

系统登陆

{% csrf_token %}

效果图

【django5】Forms模块_第1张图片


你可能感兴趣的:(Django)