zoukankan      html  css  js  c++  java
  • 118.django中表单的使用方式

    表单

    HTML中的表单:

    从前端来说,表单就是用来将数据提交给服务器的,不管后台使用的是django还是php等其他的语言。只要把input标签放在form标签中,然后再添加一个提交的按钮,就可以将input标签中对应的值提交给服务器。

    Django中的表单:

    Django中的表单丰富了传统的html语言中的表单,在Django中的表单主要有以下两个作用:
    (1)渲染表单模板
    (2)表单验证数据是否合法。

    Django中表单使用流程:

    首先我们以一个留言板为例。简单的介绍一下Django中表单的使用流程。
    (1)首先在项目中的APP中新建一个python文件forms.py,在forms.py文件中就可以定义我们的表单模板了。示例代码如下:
    from django import forms
    
    
    class MessageBoard(forms.Form):
        title = forms.CharField(max_length=100, min_length=2, label='标题', error_messages={'invalid': '您输入形式不合法'})
        content = forms.CharField(widget=forms.Textarea, label='内容')
        email = forms.EmailField(label='邮箱')
        reply = forms.BooleanField(required=False, label='是否需要回复')
    
    (2)在views.py文件中,应用form表单,进行验证数据是否合法,使用GET请求返回定义的Django模板页面;采用POST请求,如果验证数据合法,就获取提交上来的数据,否者的话,就返回HttpResponse提示用户失败。示例代码如下:
    from django.shortcuts import render
    from django.http import HttpResponse
    from django.views import View
    from .forms import MessageBoard
    from django.forms.utils import ErrorDict
    
    
    class MessageBoard_view(View):
    
        def get(self,request):
            form = MessageBoard()
            return render(request, 'front/index.html', context={'form': form})
    
        def post(self,request):
            form = MessageBoard(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)
                print(content)
                print(email)
                print(reply)
                return HttpResponse('success')
            else:
                # print(type(form.errors))
                # <class 'django.forms.utils.ErrorDict'>
    
                # 打印出显示的错误信息,字典形式显示
                print(form.errors.get_json_data())
                return HttpResponse('Fail')
    
    (3)在index.html中将Django表单进行渲染。在table标签中对我们实例化的form对象使用as_table方法就可以将我们定义在forms.py文件中各个字段渲染成table表中的tr,td标签进行显示,在form标签中写入一个submit的input标签就可以将我们在浏览器中输入的信息采用POST请求,提交至后台,示例代码如下:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Django中表单的使用流程</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>
    
    (4)在APP中创建文件urls.py文件,进行视图与url之间的映射,示例代码如下:
    from django.urls import path
    from.views import MessageBoard_view
    
    
    app_name = 'front'
    
    
    urlpatterns = [
        path('', MessageBoard_view.as_view(), name='index'),
    ]
    
    (5)在项目中的urls.py中进行主url与子url之间的映射,示例代码如下:
    from django.urls import path, include
    
    urlpatterns = [
        path('front/', include('front.urls')),
    ]
    
    始于才华,忠于颜值;每件事情在成功之前,看起来都是天方夜谭。一无所有,就是无所不能。
  • 相关阅读:
    formValidator4.1.1问题汇总
    什么,又是字符串拼接,我有些不淡定了
    webform下的分页辅助类再总结
    winform下的一个分页控件总结
    总结SQL Server窗口函数的简单使用
    sql复制表定义及复制数据行
    动态SQL开发基础和经验再总结
    c#执行定时计算限制操作(计时器)
    ado.net关于操作数据库的连接字符串整理
    使用Visual Studio实现WinForm多语言版本实例
  • 原文地址:https://www.cnblogs.com/guyan-2020/p/12309887.html
Copyright © 2011-2022 走看看