クラスの概要のジャンゴ四日目

day17 
### 1つの要約。。
- 1.orm 
    -パラメータ
        - nullの空白デフォルト((1、 ' M')、())
    
    - 1知っている必要がありますが、13になります
        。1.戻りオブジェクトのリスト- 
            -すべての()   
            -フィルタ()
            - (除外)
            -値(){} 
            - values_list( 'ID'、 '名称')()
            - ORDER_BY() -    
            -リバース()
            - DISTINCT()
        -オブジェクト2を返す
            - GET()
            -ファースト()
            -最後の()
        -戻り3 
            - COUNTは、()
        -ブール値4を返す
            - (EXISTS)
    二重下線の表2.シングル-
        - GTE LTE LT __gt
        - __in = [] __range = [] 
        - __icontains等__contains無視ケース
        - __startswith __endswith 
        - __istartswith __iendswith 
        - __isnull =真
        
    - 3外部キーが
        -多くの関係を示し
        BOOK - :
            - = models.ForeignKeyパブ(出版社、 = models.CASCADE on_delete、= NULL)
            
        - book_obj.pub _>オブジェクトに関連付けられている
        - book_obj.pub_id 
        - book_obj.pub.name 
        
        -設定されていないrelated_name 
        - pub_obj.book_set _>関係管理オブジェクト
        - pub_obj.book_set.all()
        
        - = related_name '書籍'に設定
        pub_obj.books.all()
        
        - models.BooK.objects.filter(pub__name = 'XXX')
        - models.Publisher.objects.filter(book__name = 'XXX')
        
    - 4 -多くの
        -で表される多くの関係
        今- 
            -著者
        -著者
        
        - book_obj.author _>関係管理オブジェクト
        - book_obj.author.all()
        - book_obj.author.set([])[オブジェクト、オブジェクト] [ID、ID] 
        - book_obj.author.add()オブジェクト、オブジェクトID、ID 
        - book_obj.author.remove()
        - book_obj.author.clear()
        - book_obj.author.create()スタディを作成
        
    -パケット集約と
        `` `Pythonの
        django.db.modelsインポートMAX、MIN、合計から平均、カウント
        
        models.Book.objects.aggregate(MAX = MAX( '価格')){ '最大':100}         
        
        。models.Author.objects.annotate(MAX( 'books__price'))の値()对象列表         
        
        models.Book.objects .values( '著者')注釈を付ける(マックス( '価格'))。
        `` ` 
                
    - 6.FQ   
        -フィルタ(sale__gt = F( '店'))
        
        -アップデート(販売= F( '販売')* 2 + 13)
        
        - Q(Q(id__gt = 1)| Q(id__lt = 5))、Q()
        - &| 
                
    - 7.事务
        -始めます。  
        -コミット; 
        `` `のpython 
        django.db輸入取引から
        インポート時の

        試み:
            transaction.atomicと(): 
                models.Publisher.objects.create(名= 'XXXXXX')                

        電子などの例外を除いて: 
            印刷(E)
        `` ` 
        
- 2.cookieセッション     
    - 1.cookie 
        -のブラウザに格納された鍵の束を
       
        設定-         
            - response.set_cookie(キー、値、加齢=最大5)。
            
        -ゲット
            - Request.Cookies []に.get 
            
        -削除
            - response.delete_cookie(キー)
            
    - 2.session 
        -サーバー上に格納された鍵の束、クッキーに依存
        -要求.session [K]はV = 
        なりますrequest.session [K] -   
        - request.session.delete()
        - request.session.flush()
			
### 2今日言語
- 1.ミドルウェア 
    - https://www.cnblogs.com/maple-shaw/articles/9333824.html 
    -中間メンバクラス、要求と応答の処理のDjangoである。5つの方法 
    -実行時パラメータ順次戻り値実行
    
    - process一(自己、リクエスト)
        -パラメータ:
            -要求の要求ビューと同じ機能
            
        - :実行時間
            表示機能、また、ルート一致の前に実行前- 
            
        -実行順序:
            -登録順に順番に
        
        -戻り値:
            -なし:正常な流れ   
            -のHttpResponse:
                -現在のミドルウェアミドルウェア機能process一ビューのルートが一致した後実行しない
                -直接実行方法は、ブラウザに結果を返すために、通常のプロセスを残し、現在のミドルウェアをprocess_response 
    
    - process_response(セルフ、リクエスト、レスポンス)
        -パラメータ:
            -同じリクエストでビュー機能付きリクエスト
            -レスポンスレスポンスオブジェクトを
            
        -実行時間:
            -ビュー機能が実行された後
             
        -実行順序を:
            -登録の順序で実行降順
        
        戻り値- :             
            -のHttpResponse:のHttpResponseオブジェクトを返す必要があります
                      
    - process_view(セルフ、要求を、view_func、view_argsと、view_kwargs)
        -パラメータ:
            -ビュー機能要求にとの要求A 
            - view_funcビュー機能を
            - view_argsとビュー関数に渡される位置パラメータ
            -ビュー機能キー設定パラメータにview_kwargs 
            
        : -実行時間を
            も表示する機能が実行される前と後の、ルート一致- 
            
        -実行順序:
            -順番に登録順に
        
        -戻り値:
            -なし:通常の流れ   
            -のHttpResponse:
                - process_viewビューミドルウェア機能は、現在のミドルウェア後に実行されていません
                -直接実行方法最後process_responseミドルウェア、ブラウザに結果を返すために、通常のプロセスを残し
     
    -にprocess_exception(自己、リクエスト、例外 ):
        -パラメータ:
            -同じ要求ビュー機能を要求
            -例外エラーオブジェクト
            
        -実行時間(トリガ条件)
            エラー表示後-実行前
            
        :実行の順序- 
            -登録の逆の順序で実行
        
        -戻り値:
            -なし:次の処理ミドルウェアへの通常のプロセスは、ジャンゴに対処するための例外処理ではありません
            -のHttpResponse:
                -にprocess_exceptionミドルウェア現在のミドルウェア後実行しない
                -直接実行方法最後process_responseミドルウェアを、ブラウザに結果を返すために、通常のプロセスを残して
    
    - process_template_response(セルフ、リクエスト、レスポンス):
        -パラメータ:
            -同じリクエストでビュー機能で要求を
            -レスポンスtemplate_responseオブジェクトを
            
        -実行時間(トリガ条件): 
                A1:$(「INPUT [NAME = "II1"]「)。valを ()、 
            -ビュー機能は、オブジェクトtemplate_responseを返します
            
        -実行順序:
            -登録の逆の順序で実行
        
        -戻り値:
            -のHttpResponse:オブジェクトがtemplate_response返す必要があります

    
- 2.ajax 
    - https://www.cnblogs.com/maple-shaw/articles/9524153.htmlを
    
    実施形態を要求します- :
        - 1.ブラウザのアドレスアドレスにGETを入力してください
        - 2.formがGET / POST形成
        3.AラベルGET - 
        
    - AjaxのJS技術、送信要求データ伝送のJSON XML 
        -パーシャルリフレッシュ非同期
    
    1.計算例を- 
        - [ ] + [] = [] 
        
        `` `JavaScriptの
        $アヤックス({ 
            URL: '/ Calcの/'、
            タイプ'POST'、
            データ:{ 
                A2:$( 'INPUT [名= "II2"]')ヴァル。 ()
            }、
            {:成功機能(RET)
                。$( 'INPUT [名= "II3"]')ヴァル(RET)

            } 
        })	 
        `` ` 
        
    -導入2.ajaxパラメータ
        
        ` ``のJavaScript 
        の$アヤックス({ 
            :「/ URL /アップロード「//アドレスのアップロード
            タイプを」ポスト」、//要求のタイプ
            PROCESSDATA:データを処理するためのjQueryを教えていない//、誤送信された
            コンテンツタイプのリクエストヘッダを設定するためにjQueryのを教えていない//、偽:contentTypeのを
            データ:form_data、//データ} { 
            成功:関数(RET){   
                にconsole.log(RET)

            }、 
         `` `         
            エラー:関数(RET) {
                アラート(RET)
            } 

        })
    
    -セットポスト3.リクエストを送信
        -クッキーcsrftroken前提
        - csrfmiddlewaretoken内のキーと値のペアを追加1.data 
        - 2.headers:{ 
            'csrftoken-X':$(「INPUT [名= "csrfmiddlewaretoken"]「)のVal(),. 
        } 
        -導入3.ファイル

- 3.formアセンブリ
    https://www.cnblogs.com/maple-shaw/articles/9537309.html - 
    
    -フォーム成分の影響:
        --1自動的に入力ボックスを生成
        -データを検証することができる2 
        - 3.あるエラー
    
    - 1.登録例

    -使用2.formアセンブリ
        `` `Pythonの

        クラスregform(forms.Form):
            ユーザ名= forms.CharField(ラベル= 'ユーザ名'、MIN_LENGTH = 6)
            パスワード= forms.CharField(ラベル= 'パスワード'、ウィジェット= forms.PasswordInput)
         
        `` `    
            
        -ビュー: 
        ` ``パイソン

            form_obj = regform()
            
            form_obj = regform(request.POSTの)   
            form_obj.is_valid()#検証データ
            
            form_obj .cleaned_data#のみを介して検証データ
            
            戻りレンダリング(要求、 'reg.html' { 'form_obj':form_obj})
        ``     
            
        -テンプレート:
            - {} {}デモform_obj.as_p                      
            - {{form_obj.username }}入力フレーム
            - {{form_obj.username.label}}ラベル値
            - {{form_obj.username.id_for_label}}入力フレームID 
            - {{form_obj.username。すべてのエラー}}フィールド電流誤差
            - {{form_obj.username.errors.0}}最初のエラー現在のフィールド               
            - {{form_obj.non_field_errors}} __all__グローバルエラー
    
    - 3パラメータフィールドと導入     
        - CharFieldです
        - ChoiceField 
        -なMultipleChoiceField         
        
        - = Trueの場合はnullを許可するかどうか、必要な
        -ウィジェット=なし、HTMLウィジェット
        -ラベル=なし、または表示内容のラベルラベルを生成する
        -初期=なし、初期値
        - help_textに=「」、で(情報を助けます)次のタブを表示
        - error_messagesは、いずれも、エラーメッセージ{「不正な形式」:「が空ではない」、「無効」「必要」} =いない
        バリ= []、カスタム検証ルール-
        -編集するかどうか、偽=無効	 
        
    チェックサム4.内蔵カスタム検証- 
        -必要
        - MAX_LENGTH 
        - MIN_LENGTH 
        
        - 1.建て検証
        `` `Pythonの
 
            django.coreからを。バリデータのインポートRegexValidator

            電話番号= forms.CharField(
                バリ= [RegexValidator(R&LTを'^ 1 [3-9] \ D {9} $'、 ' 電話番号の形式が不正である')] 
        `` 
        
        - 2カスタム関数
        `Pythonの
       
            ValidationErrorをdjango.core.exceptionsインポートから
            DEF check_username (値):
                値の「アレックス」IF:
                    昇給ValidationErrorを(「ユーザ名に不正な文字が含まれ、再選択してください」)
        
        `` ` 
        
    - 5.is_validソースコード分析とローカル、グローバルフック
     
        `` `Pythonの

         DEFのclean_username(セルフ) :
             #現在のフィールドのバリデータのローカルフック
             小切手で#は、フィールドの現在の値を返します
             ValidationErrorをチェックすることにより、例外をスローしません#を
            渡し

         DEFクリーン(セルフ):
            任意のフィールドのすべてのフック#バリデータ
            のすべてのフィールドの値をチェックによって返された#
            #は__all__をチェックして、例外をスローしませんがValidationErrorをのある
            パスワード= self.cleaned_data.get(「パスワード」)
            re_password = self.cleaned_data.get(「re_password 「)
            ==パスワードをre_password場合:
                リターンself.cleaned_dataの
            self.add_error(」re_password「」2つのパスワードが一致しないと!!!! 『)
            昇給ValidationErrorを(』 2つのパスワードが「と一致しません。)     
         
         `

 

おすすめ

転載: www.cnblogs.com/lilyxiaoyy/p/11372112.html