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>
View Code

{{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="输入正确的手机号" )])
View Code
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)
View Code
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)
View Code
from django.urls import path
from front import views
urlpatterns = [
    path('', views.IndexView.as_view(),name='index'),
    path('myform/', views.myform,name='ff'),
]
View Code
 validators的使用



posted @ 2018-10-23 21:37  来看看博客  阅读(167)  评论(0编辑  收藏  举报