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つのパスワードが「と一致しません。)
`