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')),
]
相關文章
相關標籤/搜索