予備ジャンゴ - + URLの構文解析

 

1.静的設定ファイル:

あなたへの対応のバックにリソースを持っているあなたのブラウザにURLを入力して
、あなたができることを意味し、あなたのリソースを与えるために、事前に設定するためのバックエンドインターフェースの
人が事前に定義されたリソースへのアクセス権を持っています。

どのようにユーザーにそれインタフェース2.djangoオープンリソース?
オープンルーティングと関係urls.py.に対応した機能を表示

静的ファイルとは何3.
通常の状況下で、ライブラリは事前に私たちは、フォルダ内の静的フォルダと呼ばれるサイトで統一して使用されるデフォルトの静的ファイルを使用する画像のCSSファイル、JS、サードパーティのウェブサイトを書かれていますファイルは、異なる種類の異なるサブファイル、CSSファイル、JSファイル、フォントファイル、ファイルIMG、特別なサードパーティ製のファイルモジュールに分割することができます。Djangoは自動的にあなたがあなた自身の静的なファイルを手動で作成する必要が構築する助けにはなりません。

4.ファイルのユーザーがアクセスする静的リソースにさらさどのように
あなたの便宜のためジャンゴ露出を手動で独自のurls.pyを設定する必要はありません
、あなただけにsettings.pyに設定する必要が
STATIC_URL =「/静的/」#の静的なファイルアクセスリソースインターフェースプレフィックス
あなたは、リソースにアクセスしたい場合は、まだ上記の名前のファイルが始まる必要があり
ますが、静的リソースファイルのパーミッションへのアクセス権を持っている
あなたは、私はインターフェイスのインターフェイスファイルのパスプレフィックスバック保持する接頭辞で始まると
リストから降りて行くことを下回りますファイルが直接返さ存在するかどうかを見つけるために、各フォルダ
を手動で構成する#パス
STATICFILES_DIRS = [
ファイルパスに保存されているos.path.join(BASE_DIR、「静的」)、#の静的ファイル
os.path.join(BASE_DIRを、 「static1」)、ファイルパスに保存されている#の静的ファイル
os.path.join(BASE_DIR、「STATIC2」) 、#のファイルパスに保存されている静的ファイル
]

バインディング5.インタフェースプレフィックスダイナミック
プロフィールのインターフェース動的にバインドプレフィックスとインタフェースプレフィックスHTMLページを
HTMLページに書かれた定型文
{%}静荷重%
<SCRIPT SRC =ブートストラップ上の「{%の静的」/ CSS /min.css '%}'> </スクリプト>

6.requestオブジェクト

内部オブジェクトは、すべての関連データの要求が含まれ
、GETは、POST文字列はすべて大文字の入力フロントエンドを経由して送信された取得要求request.method
マナーのURL、ユーザ名=ジェイソン&パスワード= 123を運んでGET要求データ、ポータブルデータのモードを ?、
あなたの場合署名要求の背後にULR getが、その後、関係なく、あなたがrequest.GETを介してデータを取得することができ、要求を送信するものパラメータの特性を運びません

request.GET GET GET要求は、データと矛盾しない方法を運び、あなたは大きな辞書としてそれを見ることができる
だけで、リストの最後の要素取るrequest.GET.get()デフォルト値
値にリスト全体を取得するにはrequest.GET.getlistを()
リクエストを。 POSTデータの取得要求は、ポストの上に運ぶ
あなたは大きな辞書としてそれを見ることができる
だけで、リストの最後の要素取るrequest.POST.get()デフォルト値
リスト全体の値を取得するにはrequest.POST.getlistを()

7.pycharmリンクデータベース

下の左または右のエッジは、接続されているエントリーされている
データベースをダウンロードする必要がありますあなたがデータベースに最初に接続したとき、あなただけのドライブに注意を払うに必要

リンクMySQLのジャンゴ
Djangoは小さなデフォルトのSQLiteが付属しています(データの日付フォーマットに互換性がない)
二段階に注意を払う必要があります
設定設定ファイルに1
= DATABASES {
「NAME」:...
「HOST」を.. 。
"PORT":...
"USER":...
"PASSWORD":...
"CHARSET": 'UTF8'
}
2. __init__.py以下の項目を必要とするには、以下を__init__.pyアプリ名ファイル・アロケーション・
ドゥジャンゴTELLは、デフォルトのデータベース接続モジュールのMySQLdbが、pymysqlの使用使用しないで
輸入pymysql
)(pymysql.install_as_MySQLdbを

8.djangoのORMのプロフィール

ORM:オブジェクトリレーショナルマッピング

注:DjangoのORMは自動的にあなたが手動で独自のデータベースを作成する必要がデータベースを作成する助けにはなりません
だけで自動的にテーブルを作成することができますORMを
私のアドバイスをします。Doはない別のDjangoのプロジェクトのための共通のデータベースを共有する複数のプロジェクトを別のライブラリを使用
あなたは次のモデルクラスの書面でのアプリのmodels.pyに行く
ライティングテーブルのフィールド
:ユーザー(models.Model)クラスを
DjangoのORMあなたはORMは自動的にidの主キーフィールドと呼ばれる新しいフィールドを作成するのに役立ちます時に主キーを指定しなかったとき
が、もし手動でのみORM一度設定したくないidという主キーフィールドは、手動ではもはや自動的に作成されていない主キー設定を認識し
、ID = models.AUTOFieldを(PRIMARY_KEY = TRUE)
ユーザ名= models.CharField(max_lengthを= 32)CharFieldですフィールドMAX_LENGTHパラメータを指定する必要があり
、パスワードを= models.IntegerField()
データベース移行コマンド
データベースに同期モデル内で動作します
直接コマンドの機能に影響を与えないフォルダ小さなログブックの移行を記録するためのpython3 manage.py makemigrationsのデータベース操作データベース

python3 manage.py移行は、実際のデータベースに同期のレコードに
長いあなたは、上記のコマンドを実行する必要がモデルのデータベースに関連付けられたコード移動するよう
に落ちるあの子を探してオーダー
検索のフィールドに追加および削除を
フィールドで時間を
1デフォルト値に新しいフィールドを与え
、空を可能にするために、新しいフィールドに2
CRUDデータを
チェック
models.User.objects.allを()検索
models.User.objects.filter(** kwargsからの)条件との関係である
)あなたのフィルタの結果は、サポートインデックス値とスライシング操作のリストとみなすことができるが、(1次回、負をサポートしていない
ことにより
USER_OBJ = models.User.objects.create(** kwargsから)
方法戻り値は、現在自身で作成され、ターゲットが存在する
変更
models.User.obejcts.filterを(ID = 1).update( ** kwargsから)
バッチ更新が
削除
models.User.obejcts.filterを(ID = 1).delete( )
バッチ削除

テーブル関係を確立9.orm方法

多くの;; 1、多くの多くの
共感のは、テーブルの上に立つこと、その後、別の分析上記の分析に立った
マルチパーティに建てられた-many外部キーフィールド
多対多の外部キーを専念第三章の間の関係を確立する必要がある
authorsテーブル、プレステーブル;帳テーブルを
django.db輸入モデルから

ベース・テーブルを作成するために外部キー関係を考慮していない
クラス帳(models.Model):
  タイトル= models.CharField(MAX_LENGTHを= 32)
進は、8進の合計2を占め
  価格= models.DecimalField(max_digits = 8、 decimal_places = 2)

多くの書籍と書籍の出版社との1であるので、多くの外部キーフィールド帳テーブル生き
publish_id = models.ForeignKey(「公開=にする」) デフォルトの関連テーブルと関連しているテーブルを参照するために使用されています主キーフィールド

  の外部キーフィールドの多くは同期データテーブルのフィールドに作成され、自動的に追加されますサフィックス_id

  私は鉄の頭をORM、その後、背中に_idを追加_id追加した場合

  、あなたは多くの外に書くので、とき、キーフィールドプラス_idスマートにしようとしないでください

 

作家は、いずれかの当事者の外部キーフィールドの間に内蔵され、多くの関係かもしれないとの本ですが、私はあなたがパーティーのことを、より高い周波数でクエリを作成示唆
著者= models.ManyToManyField(=「著者 」)#ジャンゴORMが自動的に作成するのに役立ちます第三リレーショナルテーブルの書籍や著者
このフィールドの著者は、仮想フィールドがちょうど高速ORMビルド関係表の第III章の役割を果たしているテーブルに表示することができないです

クラスが公開(models.Model):
  タイトル= models.CharField(max_lengthを= 32)
  、電子メール= models.EmailField()

Authorクラス(models.Model):
  名前= models.CharField(max_lengthを= 32)
  年齢= models.IntegerField()
いずれかの当事者上に構築されたキーフィールドのテーブル関係の外部の1かもしれませんが、我々はあなたが、より高い周波数でクエリを構築する提案その当事者

author_detail = models.OneToOneField(=「Author_detailに FK +ユニーク」)
  同期フィールドを作成するには1つの外部キーフィールドのデータテーブルが自動的に追加されたときにサフィックス_id

  あなたは_idを追加する場合、私は鉄の頭をORMし、後で_idを追加します

  あなたが1つの外部キーフィールドを書くよう_idを追加するときにスマートになろうとしません。

クラスAuthor_detail(models.Model):
  フォン= models.BigIntegerField()
  ADDR = models.CharField(MAX_LENGTH = 32)

10.urls.pyルーティング層

長い正規表現がコンテンツに合わせることができるようとして、URLの最初のパラメータは、正規表現で
すぐに戻ってダウン機能を見るのではなく試合を継続実行されます

ルーティングマッチは
スラッシュ機能にブラウザを許可ジャンゴ自動的にキャンセル
APPEND_SLASH = TrueにFalseをこのパラメータのデフォルトは
app01インポートビューから

urlpatterns = [URL(R '^管理/'、admin.site.urls)、 

URLの最初のパラメータは、正規表現であるURL(R '^テスト/ $  、'、views.test)

コンテンツにマッチする正規表現に一致することができたらと、すぐに直接対応する機能の後ろに実行関係を終了します

URL(R&LT「^ testAdd / $」、views.testadd)、
]
法律は、一致するルートジャンゴ
それが一致しない場合、スラッシュは再び追加リダイレクトするために、ブラウザの原因になります最初の試みが一致しない場合最初のスラッシュと一致しません説明する
  URLの部分が一致するルートマッチング値
  「?」パラメータが背後に乗る一致していない
未知のパケット:内容への正規表現のマッチング内のパケットビュー位置パラメータが関数に渡された
URL(R「^テスト/( [ 0-9] {4})/ ' 、views.test)
エラー『試験は、(1つの)位置引数を取るが、図2に示すように与えられた』
あなたがコンテンツに一致することが正規表現でパケットをルーティングしたとき
ときビュー機能を実行しましたパケットは、ビュー機能検査(要求、パケットの内容に一致する正規表現)にコンテンツロケーションパラメータとして正規表現に一致する
既知のグループ:パケットの内容に正規表現マッチングがキーとして使用されますパラメータを渡すことは、関数を表示する
URL(R '^ testadd /( ?P <年> \ D +)/'、views.testadd)、
与えられた"testaddを()予期しないキーワードだ引数'年'を"
あなたが持っているとき、パケットのルーティングをそしてパケットに、その後某 コンテンツときに
、グループ内に正規表現のマッチングがビュー関数に渡されたキーワード引数としてコンテンツになります(コンテンツへのパケット内の要求、年=正規表現のマッチングを)testadd

たちができる有名無名のグループを使用して機能のビューを呼び出す前に、関数に追加のパラメータを渡します
質問:私は不明と有名なを混在することはできますか?URL(R&LT '^インデックス/(\ + D)/(?P <年> \ + D)/'、views.index)、**********混合できない******** ***** !!!




複数回使用することができるパケットが、同一の場合
、未知のは、複数有していてもよい
周知は複数であってもよい
が、混合されない
URL(R「^インデックス/( \ D +)/(\ D +)/」、views.index)
URL(R '^インデックス/( ?P <引数> \ D +)/(?P <年> \ D +)/'、views.index)、

分析用逆
動的解析結果対応するダイレクトアクセスの結果URLのエイリアスに係る
第一ケース
ルートない正規表現は、直接ハードコードされていない
URL(R「^ホーム/」 、views.home、名前= ' 「XXXの関係対応するエイリアスのルーティング機能を視野に)、#
逆解析の前端を
{XXX%URL「%}
リア逆解像度
レンダリングdjango.shortcutsからインポート、のHttpResponse、リダイレクト、逆
URL =逆方向(」XXX ' )
後者の場合
、匿名の逆解析を手動で定期的なコンテンツと一致するかを指定する必要があり、パケット解析する際に
、URL(R「^ホーム/( \ dは+)/」、views.home、名前=「XXX」)を、 別名ルーティング機能#1の対応関係を視野に
遠位逆解像度
<P> <a href="{% URL'xxx' 12で%}"> </a>の111 </ P>
<P> <A HREFが= " URL%{ 'XXX' 1324パーセント}「> 111 </a>の</ P>
<P> <a href="{% URL'xxx' 14324 %}"> </a>の111 </ P>
<P> <a href="{% url'xxx' 1234 %}"> 111 </a>の</ P>
リア逆引き
URL =逆方向( 'XXX'、引数=(1))
=逆URL1(「XXX」、=引数(3213))
URL2 =リバース(「XXX」、引数=(2132131))
のみに正規表現に一致することができるように適合することが必要手動で渡されたパラメータ
三以下の場合
、あなたが手動で定期的な試合の内容を指定する必要が有名な解像度時の逆解析グループ
と同じ有名な匿名グループにグループ化することができ、逆解析
が、ほとんどの正式な書き込み
URL(R「^ホーム/( ?P <年> \ D +)/ ' views.home、NAME =' XXX ')、# 関係対応するエイリアスのルーティング機能を視野に
フロントエンド
パケットを直接不明使用してもよい
。<P> <A HREF = " {%URL' XXX」を12%}「> 111 </a>の< / P>
あなたも書かできる仕様
<P> <a href="{% url'xxx' year=1232 %}"> 111 </a>の</ P># 学び
の後端
場合、直接無名のパケットで使用することができ
URL =リバース(「XXX」、引数=(1、)。)
あなたにも書かれてできる仕様の
URL =「XXX」(リバース { '今年kwargsから=:213123})#学習する

、例えば、編集機能への
URL(R&LT '^ EDIT_USER /(\ + D)/'、views.edit_user、名前= '編集')

DEF EDIT_USER(要求、edit_id)。
edit_idは、ユーザが編集したい主キー値データである
  パス

user_listでUSER_OBJ用{%}%
<a href='/edit_user/{{user_obj.id}}/'>編集する</a>
<A HREF =「{%URL '編集' user_obj.id%}「>編集する</a>
{%} ENDFOR%

********ルート分布***********
設け
Djangoのアプリケーションでは、すべてのありますこれは、独自の独立したurls.pyテンプレートの静的を持っている
Djangoの開発プロジェクトが完全にグループ化するマルチプレイヤーを開発するために、互いに干渉しないことができるようになりますので、使用上の機能を
誰もが自分自身のApp開発し
、所有者だけを開発するために必要なアプリケーションの統合チームリーダーをDjangoの空の内部にプロジェクト
し、次いでルート分布を使用して再登録プロファイルの設定は、より一緒にステッチ完全な大規模なプロジェクトにアプリケーションに統合される

解決するために、総経路配布関係を一致あまりにも多くの経路は、プロジェクトの場合で

ルート分布意志を使用して総ルートは、ライブマッチし、(要求が来た後の全ルートの間ではないの対応だけでタスク分散をしない
だけで、あなたがハンドルに対応するアプリへのリクエストの機能は転送後、アクセスしなければどのアプリを頼む


app01インポートのURLからAS app01_urls
app02_urls AS app02インポートのURLから

= urlpatterns [
URL(R&LT 'ADMIN ^ /'、admin.site.urls)、#URL最初のパラメータは、正規表現であります

********ルート分布********
URL(「^ app01 / R」、(app01_urls)などが)、#ルートの分布は、実装は常に$で終わる内部経路ではないことに留意すべきである
URL( R&LT 'app02 ^ /'、含む(app02_urls))
]

サブ経路
django.conf.urlsインポートURLから
app01ビューインポートから

urlpatterns = [
URL( '^ REG /'、views.reg)
]


django.conf.urlsインポートURLから
app02インポートビューから

= urlpatterns [
URL( '^ REG /'、views.reg)
]

簡単書き込み(******)
URL(R&LT '^ / app01'、( 'app01.urls')を含む)、
URL(R&LT 「^ app02 /」、(含める )「app02.urls」)の

名前空間を
使用すると、ルートの配布を行っている紛争の別名に登場し、複数のアプリが、各アプリの名前空間を作成することであってもよいとき
逆引き参照に当時とあなたは、名前空間の参照別名に最終的に選択することができたときに

、URL(R '^ app01 /'、( 'app01.urls'、名前空間= 'app01 ')が含ま)、
URL(' ^ app02 / R'、「(含まapp02 .urls'、ネームスペース= 'app02' ))

 後
印刷(リバース( 'app01:REG'))
プリント(リバース( 'app02:REG'))
 遠位
<A HREF =「{%URL 'app01:REG' % }「> </a>の
<a href="{% URL'app02:reg' %}">する</a>

実際には、名前空間の知識の上に完全にあなただけのDjangoプロジェクト全体の紛争にすることができないときは、別名を再生する必要があることを保証することはできません
提案を参照して
、これまで統一されたアプリケーション名の別名プラスプレフィックスので、
[= urlpatterns
URL(R&LT 'REG ^ /'、views.reg、NAME = 'app02_reg')
]

urlpatterns = [
URL( '^ REG /'、views.reg、NAME = 'app01_reg')
]

擬似静的
偽装動的ウェブページへ静的なWebページは非常に良いSEO検索エンジンのクエリの頻度と強度のウィッシュリストにするために

、いわゆる検索エンジンは、実際に巨大な爬虫類がありません


仮想環境
モジュールは、プロジェクトに必要な機器の各項目にモジュールを必要としないとインストールできません

あなたは再ダウンロードへの純粋なPythonインタプリタをご希望の仮想環境を作成するために、それぞれを
使用すると、(仮想環境をふり、上記のプロジェクトの使用後)機械複数のNが存在してもよいです

Djangoのバージョン違い
django1.X; django2.X

分化ルーティング方法urls.pyマッチング
django2.Xと、フリー
urlpatterns = [
パス( 'ADMIN /'、admin.site.urls)
]
django1.XとURLです
[urlpatterns =
URL(R「^ reg.html」、views.reg、名前=「app02_reg」)
]
の違いdjango2.Xは、定期的な最初の引数ではありません、パス内のことは何と一致するように書かれているものをサポートしていません
パスもののdjango1.X URLの方法がある正規センスYehao django2.X方法re_pathをサポートしていない

自動的に対応するデータ型に一致させることができる定期的なパスをサポートしていないが、それは、5つのコンバータを提供するが

コンバータの5種類よりもデフォルト以外にも、カスタムコンバータをサポートしています

おすすめ

転載: www.cnblogs.com/mqhpy/p/11929572.html