ディレクトリ
テーブル関係を確立1.orm方法
1.主キー
テーブル内のデータとの対応関係を形成するための専用フィールドには、繰り返すことができない、空にすることはできません
2.外部キー
表は、別のテーブルの主キーの外部キーであり、別のテーブルは、外部キーを、データの一貫性を維持するために決定されたフィールドのレコードとすることができる繰り返すことができ、
3.マンツーマン
データ関係の関係データ対応は、例えば:男は唯一のIDカード、たった一人のIDカード対応であります
4.多くの
以下のような複数のデータ関係、の間でのデータの対応関係:本は唯一の出版社の出版された、出版社は、数冊の本を出版することができます
5.対多
例えば、第3のテーブルを確立するために必要な各種データとの間のデータ関係の対応関係の様々な:人が複数の本を書くことができ、本より一人よりも書くことができます。
ジャンゴの外部キーで主キーを作成する方法6.
主キー
あなたは、彼が作成していない場合、システムが自動的に作成するのに役立ちます、独自に作成することができます
bid = models.AutoField(primary_key=True)
外部キー
多く:
publish_id = models.ForeignKey(to='Publish')
注意事項:
1.toはそのテーブルとの関係を参照するために使用される、デフォルトの関連付けは、テーブルの主キーフィールドです
外部キーは、一般的に、マルチパーティで書かれている作成します。2.、
マンツーマン
author_detail = models.OneToOneField(to='Author_detail')
注意事項:
表のデータに同期した1。1外部キーフィールド、それが作成され、フィールドは自動的にサフィックスを追加する_id
2.それらを書くマルチパーティ
多くの多く:
author = models.ManyToManyField(to='Author')
注意事項:
1.djangoは自動的に、あなたが第三のテーブルを作成するのに役立ちます
2.多くの多くの、テーブルに書き込むために何に関係なくすることができますが、それは、高周波での書き込みに推奨されますが、パーティーを問い合わせます
3.authorこの辞書は、仮想フィールドで、テーブルに表示することができない、役割がちょうどORM伝えることです、私はテーブルの第III章を作成する必要があります
注:次のようにデフォルトの形式はラテン語で後に使用したデータテーブルを作成しpymysql、今回は中国語の入力をサポートしていない、変換が必要とされているエンコード、変換方法は次のとおりです。
alter table `tablename` convert to charset utf8;
2.djangoフローチャート要求のライフサイクル
あなたは、Djangoの実行中の処理の詳細を見ることができます
3.urls.pyルーティング層
1.設定ルーティングレベル
ブラウザは、ビューロジック機能のビューを呼び出すための関数に対応する後端ビューに対応するURLを介して要求を送信します
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
# 登录
url(r'^test/',views.login)
1.url最初のパラメータは、正規表現、内容が一致する限り、ビュー機能の背後に行うことができるような正規表現であります
そこに先頭に一致しているが、実際にはそれが一番下に一致する必要がある場合は2、そうカオスマッチング問題があるでしょう
2.いくつかの基本的なを使用する正規表現
# ^ 以.....开头
# $ 以.....结尾
4.ルートの一致
ブラウザがサーバーにリクエストを送信する際に、IPが戻って送信されます一緒に来るのURL、彼らはコールviews.pyの情報を一致させることができれば、urls.pyで正規マッチ情報を実施することを一致手段をルーティング処理のために、機能を表示します。
APPEND_SLASH = True # 该参数默认是True,加False自动取消浏览器加斜杠功能
5.匿名パケット
名も無きグループ名は、括弧内の正規表現がパケットを示していないことを単に意味をグループ化し、ブラウザがサーバに要求を送信し、ブラウザは/ URL /情報も存在する場合、あなたが使用する必要がある、戻って一緒に送信されます位置パラメータを受け取ります。
# urls.py中 url(r'^index/(\d+)/', views.index),
# views: def index(request,args)
6.有名なグループ化
伝達関数へのビューの行に一致する正規のキー値を使用してよく知られたパケットを指し、受信されるキーを使用する必要があります
# urls.py中 url(r'^index/(?P<year>\d+)/', views.index),
# views: def index(request,kargs)
注:また、パケットおよび未知のパケットとして知られて一緒に混合していないが、単一の連続使用の複数であってもよいです。
7.逆引き参照
逆解析するためには、ときマルチユースパスの数に使用され、私はこれを防ぐためにあなたがアプリで書く前に、パスのurls.pyパスを変更した場合はすべて、失敗します、あなたは逆引き参照を使用することができます動的経路の等価物を提供するための処理、逆解析のためにかかわらず、パスurls.py変動の、HTML、views.py経路は変化の経路でurls.pyと共に変化します。
1.どのように使用します
固定パス
# 在urls.py中,设置反向解析
url(r'^login/$', views.login,name='login_page'), # 路径login/的别名为login_page
# 在views.py中,反向解析的使用:
url = reverse('login_page')
# 在模版login.html文件中,反向解析的使用
{% url 'login_page' %}
不明グループ
# 针对无名分组,比如我们要反向解析出:/aritcle/1/ 这种路径,写法如下
# 在urls.py中设置反向解析
url(r'^aritcle/(\d+)/$',views.article,name='article_page'), # 无名分组
# 在views.py中,反向解析的使用:
url = reverse('article_page',args=(1,))
# 在模版login.html文件中,反向解析的使用
{% url 'article_page' 1 %}
有名なグループ化
# 针对有名分组,比如我们要反向解析出:/user/1/ 这种路径,写法如下
# 在urls.py中设置反向解析
url(r'^user/(?P<uid>\d+)/$',views.article,name='user_page'),
# 在views.py中,反向解析的使用
url = reverse('user_page',kwargs={'uid':1})
# 在模版login.html文件中,反向解析的使用
{% url 'user_page' uid=1 %}
8.ルート分布
ルート分布は、プロジェクトの総関係を一致あまりにも多くのルートを解決するために、一体的に接続された複数のアプリを使用することであるが、問題は、その書き込みに同じビュー関数の二人の場合であるので、パスマッチを行う場合エラーが表示されますが、一致、起きてからこのためにいっぱいになる、あなたはルートの配布を使用する必要があります
2.
from app01 import urls as app01_urls
from app02 import urls as app02_urls
url(r'^app01/',include('app01.urls')),
url(r'^app02/',include('app02.urls'))
incluedの分布関数は、パスを受けたとき、それは各ルーティングテーブル内で検索し、正規表現を使用しますが、操作を行うための機能です。
9.名前空間
名前は=「」自体は、それほど見つけるために見下ろしたときに、それがもはや検出されたとき、見つけなくなり、これが発生したときにエラーが一致するでしょう、名前空間を生成しないため、
ソリューション:
# 1.不使用重名的别名
# 2.
url(r'^app01/',include('app01.urls')),
url(r'^app02/',include('app02.urls'))
10.擬似スタティック
静的なWebページを装った動的なWebページは、検索エンジンは、SEO、検索クエリの頻度と強度を向上させるために
11.仮想環境
新しい仮想環境は、新しいPythonインタプリタと同等です:仮想環境とは何ですか
仮想環境の目的:アプリケーションを書くときに、Pythonインタプリタは、すべてのライブラリがロードされますが、起動時にリソースの浪費、仮想環境の使用、彼らが必要とするダウンロードモジュールのみが、唯一の起動する必要がありますモジュール。
使用上の注意:過度の仮想環境では、システムによって占有リソースの無駄になります
12.djangoバージョンの違い
ジャンゴ1.1:URLを使用してurls.py
ジャンゴ2.xの:urls.py路部材が使用されています
事項は、ノートへのファイル転送のフォームを形成します:
1.mothodはポストを変更する必要があります
FORMDATA形式に2.enctype
初期の記事では、超バックエンドを使用して必要がミドルウェアCRFをコメントアウトするための設定コンフィギュレーションファイルに移動するための要求を送信します。
# 针对于文件的操作使用的是
file_obj = request.FILES # django会将文件数据放在request.FILES中
file_obj.name
with open(file_obj.name,'wb') as f:
for line in file_obj:
f.write(line)