zoukankan      html  css  js  c++  java
  • 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的使用



  • 相关阅读:
    web.xml中/与/*的区别
    restController相关
    mvc:resources
    RequestMethod 相关
    Springside学习
    命名规范的反思
    C++ 构造中调用构造
    C++ 匿名对象的生命周期
    C++ 构造函数的对象初始化列表
    C++ 类的构造函数使用规则
  • 原文地址:https://www.cnblogs.com/wdee/p/9839572.html
Copyright © 2011-2022 走看看