Pythonベース(Django 2)

3236 ワード

本編は前編Pythonベース(Django)に続く
六、Form
説明:DjangoのFromには、自分をHTMLに表示する機能と、データを検証する機能の2つがあります.
個人的にはHTMLという機能を表示するのは不便だと思いますが、表示スタイルがあまり調整されていないので、Formのチェックデータのみの機能を使うことをお勧めしますので、ここではスタイルの設定については紹介せず、チェックデータの機能を重点的に紹介します.
 
Formの使用は大きく3つのステップに分けられます.
まずクラスを定義します.クラスの各フィールドはFormのプロパティです.
次に、クラスに基づいてオブジェクトを作成し、検証方法を定義します.作成したオブジェクトをフロントエンドのHTMLページ参照に戻し、対応するHTMLコードを生成します.(クラスを呼び出す方法により、フロントエンドユーザがコミットしたデータを検証および取得できます.)
最後にHTMLで参照:HTMLのラベルとスタイルがカスタマイズされている場合、ラベルのname属性の値はFormのフィールド名と一致しなければなりません.そうしないと、バックグラウンドではデータの取得と検証ができません.
例:
1、クラスを定義します.
ファイル名:account.py
from django import forms        #  forms 

class Userinfo(forms.Form):    #         forms.Form
   email = forms.EmailField(required=False)    #        ,    required=False         
   username = forms.CharField()    #forms       ,           
   password = forms.CharField()

2、クラスに基づいてオブジェクトを作成し、検証方法を定義する
ファイル名:views.py
from django.shortcuts import render,HttpResponseRedirect
from app01 import account as AccountForm    #          

def login(req):    #      
    obj = AccountForm.Userinfo(req.POST)    #         
    if req.method == 'POST':                #          POST
        error = ''
        if obj.is_valid():            #             
            all_data = obj.clean()    #           (    )
            if all_data['username'] == 'test' and all_data['password'] == '123':
                return HttpResponseRedirect('/index/')    #        URL:/index/
        else:
            error = obj.errors    #             
            return render(req,'account/login.html',{'error':error})    #                  。
        
    # return render(req,'account/login.html',{'obj':obj}) #                  HTML    ,      HTML  。
    return render(req,'account/login.html')    #                ,              HTML  。

3、HTMLでの引用
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
    <div style="margin: 20px">
        <form action="/login/" method="post">
            <p>
                <input type="text" class="span3" name="username" placeholder="Username">    <!--       name   Form       -->
                <span>{{ error.username }}</span> <!--             ,        -->
            </p>
            <p>
                <input type="password" class="span3" name="password" placeholder="Password">
                <span>{{ error.password }}</span>
            </p>
            <p>
                <input type="text" class="span3" name="email" placeholder="Email">
                <span>{{ error.email }}</span>
            </p>            
            <input type="submit" value="submit">
        </form>
    </div>
</body>
</html>

七、Model(続き)