django中的Form有什么功能?python学习

    /    2019-03-05

django中的Form一般有两种功能:

1、输入html

2、验证用户输入

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import re
from django import forms
from django.core.exceptions import ValidationError


def mobile_validate(value):
    mobile_re = re.compile(r'^(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$')
    if not mobile_re.match(value):
        raise ValidationError('手机号码格式错误')


class PublishForm(forms.Form):

    user_type_choice = (
        (0u'普通用户'),
        (1u'高级用户'),
    )

    user_type = forms.IntegerField(widget=forms.widgets.Select(choices=user_type_choice,
                                                                  attrs={'class'"form-control"}))

    title = forms.CharField(max_length=20,
                            min_length=5,
                            error_messages={'required'u'标题不能为空',
                                            'min_length'u'标题最少为5个字符',
                                            'max_length'u'标题最多为20个字符'},
                            widget=forms.TextInput(attrs={'class'"form-control",
                                                          'placeholder'u'标题5-20个字符'}))

    memo = forms.CharField(required=False,
                           max_length=256,
                           widget=forms.widgets.Textarea(attrs={'class'"form-control no-radius"'placeholder'u'详细描述''rows'3}))

    phone = forms.CharField(validators=[mobile_validate, ],
                            error_messages={'required'u'手机不能为空'},
                            widget=forms.TextInput(attrs={'class'"form-control",
                                                          'placeholder'u'手机号码'}))

    email = forms.EmailField(required=False,
                            error_messages={'required'u'邮箱不能为空','invalid'u'邮箱格式错误'},
                            widget=forms.TextInput(attrs={'class'"form-control"'placeholder'u'邮箱'}))

Form

def publish(request):
    ret = {'status'False'data''''error''''summary'''}
    if request.method == 'POST':
        request_form = PublishForm(request.POST)
        if request_form.is_valid():
            request_dict = request_form.clean()
            print request_dict
            ret['status'] = True
        else:
            error_msg = request_form.errors.as_json()
            ret['error'] = json.loads(error_msg)
    return HttpResponse(json.dumps(ret))

View

扩展:ModelForm

在使用Model和Form时,都需要对字段进行定义并指定类型,通过ModelForm则可以省去From中字段的定义

class AdminModelForm(forms.ModelForm):

    class Meta:
        model = models.Admin
        #fields = '__all__'
        fields = ('username''email')

        widgets = {
            'email' : forms.PasswordInput(attrs={'class':"alex"}),
        }


(0)

分享至