〜Day52 Djangoの早期垣間見るログイン登録システム

要約
1.ホモキラルラインとWebフレームの簡易版
1.手動処理要求ソケット
2.マニュアル処理HTTPデータ、取得したユーザのアクセスURL
のURLの異なる結果へのユーザーアクセスに対する応答に応じて、3
2.wsgirefモジュール(Webサービスエンド・ゲートウェイ・インタフェース)
ソケットコードをカプセル化し
、大きな辞書へのデータ形式のHTTPリクエストを開封するとき
、HTTPプロトコルのデータ・フォーマットの要件に適合するためにデータをパッケージ化するために時間がかかるに応答して
開始
サーバ=はmake_server(「127.0.0.1」、 8080、 )を実行
#リアルタイム一度クライアントが自動的に接続括弧する127.0.0.1:8080アドレスを監視し、実行メソッドの呼び出し、
#は、サーバ起動)(server.serve_foreverを
HTMLページにデータを転送する方法3.
現在の日付がHTMLをレンダリングする方法を1 Rのページ読み出しモード>>>文字列に置換文字列を使用してhtmlファイル
どのように辞書やhtmlページ値のも簡単かつ高速動作レンダリングする2.
テンプレートのレンダリング
Jinja2のモジュール
テンプレート1をレンダリングする(マスデータ)
2.テンプレート文法パイソンに非常に近い(構文)

インポートテンプレートJinja2のから
テキスト形式のHTMLテンプレート内の着信データ
レンダリング()

テンプレート構文
{{データ}}
{%}のuser_listの%におけるユーザ
{%}%ENDFOR

テンプレートは2つのみ構文である
関連の変数:{}、{}
{%%}:論理的に関連する

別のファイルに4.開封異なる機能を
特異的に(テンプレートフォルダ)htmlファイルを置く
のurls.py
のviews.pyを

あなただけに機能を追加したい場合は、我々はWebフレームワークのバージョンをお勧めします。このため
、上記二つの文書にコードのビットを書き込み、各

HTTPプロトコル
1. 4の特性
アプリケーション層の役割上1ベースのTCP / IPプロトコル
要求応答に基づいて2.
3.ステートレス
クッキー
セッション
トークン
4コネクション
キープアライブ

のWebSocket(主にチャットルーム関連機能に使用されます)

2.要求応答データフォーマット
要求最初の行(要求モード・プロトコル・バージョン)
リクエストヘッダ(バンチK:Vキーと値のペア)情報を運ぶは先の時間を知ることができるサーバの一部を開拓するために類似している

運ぶためにリクエストを送信するリクエストボディ(ポストデータリクエストのボディに配置されます)



、応答データ形式上記
3レスポンスステータスコード
1XX
2XX:200である
3XX:301/302
4XX:403分の404
5XX:500


のPython 3メインフレームウェブ
ジャンゴ
フラスコ
トルネード


ジャンゴ
Djangoプロジェクトは、通常、あなたのマシン上で泡を可能にするため
、コンピュータの名前1.中国持つことはできません
。2.プロジェクトも中国の名前を再生しないようにしてください
。3. pycharmウィンドウは1つのプロジェクトだけのことができます


問題のDjangoのバージョン
django1.X
django2.Xを

Djangoはダウンロード
Djangoの== 1.11.11インストールPIP3を

するために推奨される最新の3.7を、使用しないようにPythonインタプリタを3.6 / 3.5 / 3.4


に成功し、ダウンロードを決定するためにどのように
ジャンゴ管理者は、

Djangoのプロジェクトを作成
ジャンゴ管理者startprojectのプロジェクト名
プロジェクトフォルダと同じ名前の
__init__ .py
ユーザ設定可能プロファイルにさらさsettings.pyは
のurls.py
wsgi.pyは
manage.pyの
アプリケーション作成
ジャンゴ-ADMIN startappのアプリケーション名(学生を常習歳の少年から... app01)
のpython3のmanage.pyのstartappのアプリケーション名前
のアプリのフォルダのファイル名
の移行フォルダのデータベース操作を記録
を__init__.py
apps.py登録アプリ関連ファイルを
admin.py Djangoのバックエンドの管理関連
models.pyのORMモデルクラスに関連する
views.pyビュー機能(関数/クラス)
tests.pyテスト関連

のスタートDjangoプロジェクト
のpython3 manage.pyのrunserver Djangoのデフォルトのポートは、プロジェクトが開始された8000です

。注:コマンドライン自動的にテンプレートフォルダを作成しないプロジェクト作成
手動で作成する必要があることを意味して追加するには、パス上の設定ファイルに必要

も設定が登録されたファイルを作成する必要があるアプリを

アプリのコンセプト
Djangoプロジェクトは、大学、アプリに似ています異なる大学
それぞれの大学のためには、独自の独立した機能を持つ


白ジャンゴを3つのトリックとなります
のHttpResponseの文字列を返す

戻りhtmlページをレンダリングする

リダイレクトリダイレクトを

あなたは最初のプロセス全体のDjangoで再度行く
たとえば、ログイン機能
、静的な設定ファイル
のバックエンドを形成するデータ提出するフォームを取得する方法を
リクエストメソッド
ジャンゴ使用pycharmデータベース接続mysqlデータベース
ジャンゴORMプロフィール
検索テーブルのフィールドに変更し追加と削除を
検索テーブルのデータ変更への追加や削除を


新しく作成されたがアプリのsettings.pyレジスタが最初に行かなければならない
INSTALLED_APPS = [
'django.contrib.admin'、
'django.contrib.auth'、
'django.contrib.contenttypes'、
'django.contrib.sessions'、
「django.contrib.messages 」、
『django.contrib.staticfiles』、
『app01』#の速記
『app01.apps.App01Config』#フルネーム
]


HTMLファイルはすべて、デフォルトのテンプレートフォルダに配置されている
前の文書のためには、私たちはただ引き継ぐ使用するように書かれていますこれらのファイルは、「静的ファイル」と呼ばれる呼び出すことができます
静的ファイルをすることができ
、ブートストラップフレームはクラスのために書かれている前の
画像を
CSS
JS
下の静的なデフォルトフォルダ上の静的ファイルのすべて
のフォルダに作成されるデフォルトのサブフォルダによる静的デフォルトフォルダ
現在のサイトのすべてのスタイルファイルのCSSのフォルダ
のすべての現在のサイトのJSファイルのjsファイルを
現在のサイト内のimgファイルのすべての画像ファイルは、
他の(フロントエンドにコードのサードパーティ製プラグインのコードのフレームワーク...)


私たちは、ポート番号が占有で唯一のDjangoプロジェクトであることを確認する必要がありますときに、プロジェクトをddjango始める
そうでない場合は、バグを引き起こす可能性が高いだろう


URLリソースのユーザーにはアクセスすることができ
、関連するリソースはあなただけのURLを提供しますアクセスするために(******)

バックエンドリソースは、一般的に、手動でユーザーがにさらされる必要があるかどうかを指定する必要が

静的な設定ファイル
STATICFILES_DIRS = [
os.path.join(BASE_DIR、「静的」)
]
限り、あなたは、静的なフォルダに入るとパスはに特定のファイルにアクセスできる



フォルダの名前は静的ではなく、インタフェースの接頭辞ではありません。#=「/静的/」STATIC_URL
「」「」「あなたは、静的なファイルへのリソースファイルパスにアクセスしたい場合は、静的で始まらなければなりません」
#手動で静的フォルダ、ユーザーに公開されるすべてのリソース
STATICFILES_DIRS = [
os.path.join(BASE_DIR、「静的」)、本物の#フォルダのパス
os.path.join(BASE_DIR、 'static1') 、
os.path.join(BASE_DIR、「STATIC2」) 、#実際のフォルダパスの
os.path.join(BASE_DIR、「static3」) #実際のフォルダパス
]


あなただけのコードを必要とするので、Djangoはデフォルトで自動再起動をサポートしていますあなたができるよりも数倍以上のページを更新し
、時にはそれは、再起動メカニズムがあるのですが比較的遅い
メカニズム:リアルタイム限り、コードの変更が自動的に再起動しますと、ファイルの変更を監視し
、あなたのコードは、まだこの時間は自動的に与えられます終了していない可能性が


静的なファイルインタフェースの接頭辞を「動的分析"
{%}静荷重%

<REL = "このスタイルシート" HREF = "{ 'ブートストラップ3.3.7-DIST / CSS / bootstrap.min.cssの'静的%}%を"リンク>
<SCRIPTブートストラップ3.3.7-DISTにSRC =「静的{%」 /js/bootstrap.min.js'%}「> </ script>の
動的インターフェイスのプレフィックス取得パーサーを使用して



、フォームがデフォルトのフォームが要求を取得している
データモードを搬送するデータのURLがみなし続いて
http://127.0.0.1:8000/login /?ユーザ名= zekai&パスワード= 123

にする方法ポストの要求
の設定を変更後の要求は中間のコメントを提出する必要があります後に
ミドルウェア= [
「django.middleware.security.SecurityMiddleware」、
「django.contrib.sessions.middleware .SessionMiddleware '
'django.middleware.common.CommonMiddleware'、
#' django.middleware.csrf.CsrfViewMiddleware」、
'django.contrib.auth.middleware.AuthenticationMiddleware'、
'django.contrib.messages.middleware.MessageMiddleware'、
「django.middleware.clickjacking.XFrameOptionsMiddleware」
]

先データによるフォームのフォーム送信アクション
既定1の場合には、現在のアドレスに書き込まれていないが提出された
2もサフィックス(このプロジェクトを使用)/インデックス/書き込むことができる
3.またあなたがする全体のパスを書くことができる

主な機能は、最初の一般的なget要求に対処します表示
:ログイン(リクエスト)DEF
処理ロジックの異なる方法が必要異なる要求のための#ビュー機能
request.method IF#を==「GET」:
印刷(「受信が')
プリント(request.method)#様式および遠位要求文字列を取得することができるが、すべて大文字である
)#プリント(型(request.method)
は(レンダリング要求を返し、' login.htmlと「)
#= ELIF request.method =「POST」:
は、ユーザの入力ロジックはそれに応じて決定され得る#
#(「弟を得る」)はHttpResponseを返す
request.methodのIF ==「POST」:
(「来て赤ちゃん」)はHttpResponseを返すが、
レンダリングを返す(要求' login.htmlと")


フロントエンドデータ取得
request.method取得要求方法を

データの処理だけでのみデータ処理の多くを行っても、バックエンドモジュールをDjangoのwsgirefされていない
GET
request.GETデータ収集フロントエンドを提出しますが(それは大きな辞書のようである)

request.GET.get(「ユーザ名」)#をデフォルト値はリストですが、ちょうど最後の要素のリストを取ることが
強くあなたは括弧の中にフォームの値を使用することをお勧め#

、あなたが(******)すべてを一覧表示する直接たい場合は#
request.GET.getlist(「趣味」に)
POST
request.POSTデータ収集フロントエンドポストの提出は、(それは大きな辞書のようである)

デフォルト値はリストですがrequest.POST.get(「ユーザ名」)#を、ちょうど最後の要素のリストを取る
強くおことをお勧めします#を括弧の中にフォームの値を使用し

ます(******)すべてを一覧表示する直接たい場合は#
request.POST.getlist(「趣味」)


Djangoのデフォルトが内蔵されているsqliteのデータベース
あなたは別のものにそれをしたい場合データベースの設定は、コンフィギュレーションファイルに設定する必要があり
1.settings設定ファイル
データベース= {
「デフォルト」:{
「ENGINE」:「django.db.backends.mysql」、
「NAME」: 'Day5l "
'ホスト': '127.0.0.1'、
'ポート':3306、
'USER': 'ルート'、
'PASSWORD': '123'、
'CHARSET': 'UTF8'
}
}
2、プロジェクトの名前でinitファイルやアプリケーションファイル名initはデフォルトジャンゴのMySQLdb mysqlの接続を使用しないように言った
のではなくpymysql
インポートpymysql
)pymysql.install_as_MySQLdbを(






ジャンゴORM
ORMオブジェクトリレーショナルマッピング
テーブルクラス
記録対象
オブジェクトのプロパティ値がフィールドに対応します


アプリケーションの下models.pyでモデルクラスを書くための最初の必要性
クラスユーザー(models.Model):
あなたがマスターキージャンゴ辞書に書き込むことはできませんORM Djangoでのユーザのテーブルの主キーフィールドに#idフィールドは、作成するために、あなたのテーブルにデフォルト設定されます主キーフィールドという名前のID
#IDは= models.AutoField(PRIMARY_KEY =真 )# あなたはDjangoが自動的に作成するのに役立ちますができません主キーフィールドを指定すると
、ユーザ名= models.CharField(max_lengthを= 32) (#ユーザー名のVARCHARを32)CharFieldですパラメータを指定する必要がありMAX_LENGTH
= models.IntegerFieldパスワード()#パスワードはint
************************* *******データベースの移行(同期)コマンドを実行する必要があります***********************
のpython3 manage.py makemigrations#だけの小さなノートPC上のデータのデータベースレコードを変更するために、直接(移行用フォルダを)動作しません
python3は、#実際のデータベースと同期データベース・レコード変更移行manage.pyの
上記二つのコマンドの再実装する必要があります(******)に不可欠であるだけで、データベースに関連付けられたコードでモデルを移動:注



テーブル項目によって削除チェックが
増加し
、テーブルのフィールドを追加するために、後続の希望の外に作成されたとき、二つの方法がある
デフォルト値を設定するための新しいフィールド1
のaddr = models.CharField(max_lengthを= 32、デフォルト=「中国」)#デフォルトはこのフィールドのデフォルト値

2.空に新しいフィールドを与える
年齢= models.IntegerField(ヌル= TRUE) #このフィールドがヌル可能に


削除(注意)
、再度実行2つのコマンドが直接models.pyフィールドにコメントフィールドを削除するには次のことができ
ます:実行後、すべてに対応するテーブルのフィールド内のすべてのデータを削除するには
、通常の状況下では、基本的には、真の意味を削除するために使用されることはありませんされて




ORM操作をするクラスの名前でモデルの使用が必要です

データチェックを
app01インポートからモデル

models.User.objects.all()#直接すべてのデータ保持

models.User.objects.get(ユーザー名=ユーザー名)

RES = models.User.objects.filter(ユーザー名=ユーザー名)
res.query

USER_OBJ = res.first ()

によるデータ
1.
models.User.objects.create(ユーザー名=ユーザー名、パスワード=パスワード)
2.
USER_OBJ = models.User(ユーザ名=ユーザ名、パスワード=パスワード)
user_obj.save()

を削除
models.User.objectsを.filter(条件).delete()

変更
models.User.objects.filter(条件).Update()







ユーザーCRUD
のフロントエンドのすべてを表示するには1. ORM
のすべてを()
ループ用テンプレート構文
2(ユーザーの新しい操作)を新規追加]ボタンを
A HREFタグは直接バックエンドのロジックがトリガー
(作成)
3.追加、編集、削除ボタン
、編集
、削除
URLの後ろに保つために、データに対応する特性パラメータのid値運ぶGETリクエスト使用
)request.GET.getを(

それが編集された場合
、再描画するためにページ編集されたオブジェクトを前面に渡され

、削除された場合
、直接(...)フィルタリングする。()削除



操作
私には、フォームの書き込みのユーザーのCRUDページを
















おすすめ

転載: www.cnblogs.com/Ryan-Yuan/p/11528327.html