Django中的表单
Django中的表单
1.渲染表单模板
2.表单验证数据是否合法
使用流程
在templates中的html文件中定义form表单
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>form</title> </head> <body> <form action="" method="post"> <table> {{ form.as_table }} <tr> <td></td> <td><input type="submit" value="提交"></td> </tr> </table> </form> </body> </html>
{{form.as_table}} as_table,as_ul,as_p
在forms.py中添加表单模型,
from django import forms from django.core import validators class MessageBoardForm(forms.Form): title = forms.CharField(max_length=10,min_length=3,label="标题", error_messages={'min_length':"最少3个字符"} ) content = forms.CharField(widget=forms.Textarea,label="内容",error_messages= {"required":"必须填写"} ) email = forms.EmailField(label="邮箱",error_messages={'invalid':"请填写邮箱"}) reply = forms.BooleanField(required=False,label="是否回复") price = forms.FloatField(max_value=100,min_value=10) price1 = forms.IntegerField(max_value=100,min_value=10) url = forms.URLField() class MyForm(forms.Form): email = forms.CharField(validators=[validators.EmailValidator(message='使用正确的邮箱')]) phone = forms.CharField(validators=[validators.RegexValidator(regex= "1[345678]\d{9}",message="输入正确的手机号" )])
CharField: forms.CharField( label="标题", max_length=10, min_length=3, required=False, error_messages={'min_length':"最少3个字符"} ) EmailField forms.EmailField( label="邮箱", error_messages={ 'required':"必须填写", 'invalid':"填写正确格式的邮箱",} ) URLField url = forms.URLField() FloatField forms.FloatField(max_value=100,min_value=10) IntegerField forms.IntegerField(max_value=100,min_value=10)
from django.shortcuts import render from django.views import View from .forms import MessageBoardForm,MyForm from django.http import HttpResponse # Create your views here. class IndexView(View): def get(self,request): form = MessageBoardForm() return render(request,'index.html',context={'form':form}) def post(self,request): form = MessageBoardForm(request.POST) if form.is_valid(): title = form.cleaned_data.get('title') content = form.cleaned_data.get('content') email = form.cleaned_data.get('email') reply = form.cleaned_data.get('reply') print(title,content,email,reply) return HttpResponse('sucess') else: print(form.errors.get_json_data()) return HttpResponse('fail') def myform(request): if request.method == 'GET': return render(request,'myform.html') else: form = MyForm(request.POST) if form.is_valid(): email = form.cleaned_data.get('email') phone = form.cleaned_data.get('phone') else: email='xxx' phone='xxx' print(form.errors.get_json_data()) return HttpResponse('myform'+email+phone)
from django.urls import path from front import views urlpatterns = [ path('', views.IndexView.as_view(),name='index'), path('myform/', views.myform,name='ff'), ]
validators的使用