、MVCフレームワークとMTV
MVCは、
Webアプリケーションがビジネス・オブジェクト・モデルを担当し、それらの間に接続されたプラグインは、疎結合では、モデル(M)、コントローラ(C)及び図(V)は、3つに分割され、MVCを-calledデータベースに関連付けられ、ビューはユーザー(ページ)との相互作用を担当し、コントローラは、モデルとユーザの要求を表示するには、呼び出しを完了するために、ユーザの入力を受け付ける(つまり、URLの配布)- MTV
DjangoのモデルはMTVであります- ビジネスオブジェクトリレーショナルマッピングとデータベース(ORM)の責任:Mモデル(モデル)を表しています。
- ユーザー(HTML)にページを表示する方法の責任:Tは、テンプレート(テンプレート)を表しています。
- Vは、ビュー(ビュー)を表し:ビジネス・ロジックを担当し、かつ適切な時期にモデルとテンプレートを呼び出します。
- 上記の3つに加えて、あなたはまた、URLディスパッチャは、それがビュー、ビューの異なる治療に配布ページ要求のURLの役割であるとし、適切なモデルとテンプレートを呼び出す必要があります
第二に、ジャンゴをダウンロードしてインストール
公式ウェブサイトのアドレス:https://www.djangoproject.com/download/
現在のバージョンは1.11バージョンであり、そのため2020年にバージョン2.2を学ぶために
Djangoプロジェクトを作成しますCMDターミナルを開始しました
- 下载ジャンゴ:
PIP3のDjango == 1.11.9をインストール プロジェクトのDjangoの作成
「個人用サイト」と呼ばれるDjangoプロジェクトを作成するために、Djangoの管理者startprojectのの個人用サイトを次のとおりです。pip.exeが実行ので、Djangoはピップファイルにインストールされますので、
彼らは、スクリプトがDjangoは、インストールが成功されているフォルダ見つけたとき、それは環境を構成する必要はありませんでした。
インストールが完了したら、次が発生した場合、設定されていないという環境変数を示し、Djangoプロジェクトを作成するには、Djangoのコンフィギュレーション環境変数をインストールするパス
作成したプロジェクトファイルには、紹介
一度作成次のように、ディレクトリは、個人用サイトのプロジェクトディレクトリを生成します。- Djangoのシェルとデータベースと呼ばれることができるツール内部manage.py ----- Djangoプロジェクト、プロジェクトが実際には、あなたはいくつかの文書の枠組みを分割するかどうか、ブートファイルが存在する必要があり、プロジェクトと密接な相互作用を開始し、自分自身のそれはファイルです。
- settings.py ----他の作業データベース情報、デバッグフラグや変数を含むプロジェクトのデフォルト設定が含まれています。
- urls.py -----アプリケーションにマップされたURLパターンを担当します。
- wsgi.py ----シンプルなWebサーバーを行うwsgirefの使用上のrunserverコマンドモジュールは、後でrenserverコマンド、内部のこのファイル内のソケットに関連するすべてのコンテンツを見て、今それに注意を払う必要はありません。
プロジェクトの実行
Pythonは127.0.0.1:8080のrunserver manage.pyの
#は、今のプロジェクトを開始する準備ができてDjangoに、しかしどのようなロジックやらなかった
、彼らは、IPアドレス、ポートを書くことができないプロジェクトの命令の実行によって
、あなたが書いていない場合、デフォルトは127.0です.0.1
のpython manage.pyのrunserver 8080
でもポートを記述しない場合、デフォルトはポート8000で
のpython manage.pyのrunserver停止项目:ctrl+c
以下のような効果は、プロジェクトの成功はすでに開始したことを示す、表示されたとき、あなたが入力127.0.0.1:8080を介してウェブにアクセスすることができ、効果は次のとおりです。
個人用サイトの下でアプリケーションを作成して
何のファイルビューが存在しないことがわかります上記の機能を表示し、というように、これらのファイルをアプリケーションとして理解することができ、プロジェクトは、マイクロチャネルとして複数のアプリケーションを、持つことができる、などの決済アプリケーション、チャットアプリケーション、アプレット、友人の輪があります等...各アプリケーションは、独自の独立したアプリケーションを作成する必要性、独自のロジックを持っていなければならない
のPython manage.py startappのapp01
#manage.pyファイルは、アプリケーション・ノートを実行することで作成されます。これは、ファイルディレクトリmanage.pyに配置する必要がありますこのファイルは他のディレクトリが存在しないため、この文の実装の下で
、次のようにcmdが、新しいフォルダapp01にいくつかの前に、manage.pyと個人用サイト]フォルダ、および新しい生活に加えて、実行した後、フォルダの内容をコマンドは:pycharmスタートアップDjangoプロジェクトを作成します
Djangoプロジェクトを作成し、めったにあなたはpycharmで作成することができ、コマンドラインを使用しません
ファイル新規プロジェクトでのオプションの下で
Djangoの設定オプション
新しいウィンドウで開く、作成
結果のファイルのディレクトリを次のように
テンプレートの一つは、私たちが直接良い作成するのに役立ついくつかのテンプレートを入れて、htmlファイルであるpycharmです。プロジェクトを実行します。
実行]をクリックした後、次のことが発生し、それがプロジェクトの成功を開始することです
この場合、ページ入力127.0.0.1:8000は、あなたが訪問することができます
これは、我々はすべてのロジックを書いていないので、我々は、簡単なログイン機能を行うことです
ジャンゴを達成するための簡単な例に基づいて、
私たちは、Webプロジェクトのログインページを行い、ブラウザは、ログインWebページを取得するためのURLを入力することができるようになります
誰かが検索のurls.py
django.conf.urlsインポートURLから
ADMINのdjango.contribインポートから
インポートビュー#app01の導入のビューのファイル関数からurlpatterns = [ # url(r'^admin/', admin.site.urls), url(r'^index/', views.index), # 模仿写出路由的配置 # 配置路径,r'^/index/',这个前置导航斜杠不需要添加. # 正则,可以让路径不用写死,index/dsad/qweq/fdsf/...也能匹配到 ]
ビュー機能ビューを書く
レンダリングdjango.shortcutsインポートから
背後にある理由は、htmlファイルをレンダリングする直接書き込むことができます:# Create your views here. def index(request):# request是一个形参,接受所有请求的内容 return render(request,'login.html')
なぜ直接login.htmlを書くことができ、settings.py設定ファイルパスを設定されているので、あなたは直接得ることができます- 設定ファイルは、settings.pyにあります
- TEMPLATES 'DIRS' があります:[os.path.join(BASE_DIR、 'テンプレート')]
- BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(ファイル)))
- ABSPATH(ファイル)これは、設定ファイルであります
- os.path.dirname(os.path.abspath(ファイル))親ディレクトリのフォルダの設定ですthird_pro
- os.path.dirname(os.path.dirname(os.path.abspath(ファイル)))プロジェクトフォルダのファイル全体でthird_pro
- だから、BASE_DIRは、ファイルフォルダの最外層である、このプロジェクトのファイルフォルダですthird_pro
- 「DIRS」:[os.path.join(BASE_DIR、「テンプレートは」)]スプライスされる経路は、直接HTML文書テンプレートの中に発見することができます
- 設定ファイルは、settings.pyにあります
テンプレートテンプレートを書く、ここでhtmlファイルを作成します
注意:name属性は持っている必要があり、時に価格データフォームを通じて、あなたが過去にユーザーが入力した値を置くことができるので、<h1>欢迎来到登录页面</h1> <form action=""> 用户名:<input type="text" name="username"> 密 码:<input type="text" name="password"> <input type="submit"> </form>
これは、Webプロジェクトを完了するために簡単な
127.0.0.1:8000/indexを入力することによって、私たちは、書かれたページを取得することができます完璧なジャンゴを達成するための機能をログに記録します
ユーザーは、ユーザー名・パスワードを入力し、正しいユーザー名とパスワードかどうかを判断するために背景を入力してください
まず、GETとPOSTリクエストのリクエストを区別
デフォルトのリクエストフォームフォームの取得
そのパスを利用者から提出されたか、インデックスに返されるデータ
request.GETを- 、すべてのデータが送信された要求をGETのQueryDictタイプ<input name='username'> request.GET.get('username') # 获取 name='username' 的 input 标签用户输入的内容
ポスト要求
request.POST - POSTリクエストに送信されたすべてのデータ、のQueryDictタイプ<input name='username'> request.POST.get('username') # 获取 name='username' 的 input 标签用户输入的内容
あなたはユーザーによって提出されたデータを取得したいので、フォームは2つの方法で提出されています。
要求されたデータを取得します:
django.shortcutsインポートからレンダリングし、HttpResponseに
DEF指数(要求):
プリント(request.GET)#<のQueryDict:{ 'ユーザ名':[ 'dazhuang']、 'パスワード':[ '123']}>
名= request.GET.get( 'ユーザ名')
パスワード= request.GET.get( 'パスワード')
プリント(ユーザー名、パスワード)
ユーザ名の場合== 'dazhuang'とパスワード== '123':
---回复字符串数据( '!成功登录')はHttpResponseを返す
他:
のHttpResponseを返す( '失败!')
(要求、 'login.htmlと')をレンダリングを返します
問題があります:ページはパスによって直接要求されたとき、要求を取得するにも教えてくれません要求を取得し、フォームデータのフォームを送信し、その要求されたページリクエストでGET、POSTフォームにデータ要求書を提出され
- ポスト要求データ:
ビューには、ファイルを書き込む機能を表示します。
def index(request):
print(request.method) #'POST' 'GET'
if request.method == 'GET':
return render(request,'login.html')
else:
# print(request.GET)
print(request.POST)
username = request.POST.get('username')
password = request.POST.get('password')
if username == 'dazhuang' and password == '123':
return HttpResponse('登录成功!')
else:
return HttpResponse('登录失败!')
htmlファイル:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bootstrap 101 Template</title>
</head>
<body>
<h1>欢迎来到登录页面</h1>
<form action="/index/" method="post"> # 给一个method属性规定post请求
用户名:<input type="text" name="username">
密 码:<input type="text" name="password">
<input type="submit">
</form>
</body>
</html
設定ファイル:
データリクエストが送信されたときのポストの認証メカニズムをオフにし、設定プロファイル
MIDDLEWARE = [
'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',
]
正味の効果:
输入正确的用户名、密码:dazhuang、123,提交,
ログインに成功していない、何のログイン失敗
注意すべき点がいくつかあり:
- urls.py注意を払う必要がある問題
のURL(R「^インデックス/」 、views.index)、 パス正規の第二引数の文字列:最初のパラメータのビュー機能に対応 - views.pyの
DEFログイン(要求):
取得要求メソッド:request.method - 'GET'、 'POST'は
`` request.GET`` - GET要求は、すべてのデータに伝達され、のQueryDict型
request.POST - POSTリクエストを送信しますすべてのデータ、のQueryDictタイプ
request.POST.get( 'ユーザ名')
request.GET.get( 'ユーザ名')
はHttpResponse( '文字列')を返す---応答文字列データは
(要求、 'login.htmlと'のレンダリングretuen )
第三に、要約
ジャンゴをダウンロードしてインストール
ダウンロード:ジャンゴ== 1.11.9をインストールするPIP
プロジェクトを作成
ジャンゴ-ADMINのstartprojectのQingqingの
CD Qingqingの
スタートアップ項目を:Pythonはそのrunserver 127.0.0.1:8001 manage.pyの
Qingqingは、CD
のpython manage.pyのstartappの暁:アプリを作成しますあなたはアプリのsettings.pyのプロジェクトで構成されたプロファイルを追加する必要があります
INSTALLED_APPS = [
「暁」、アプリ名を
]= INSTALLED_APPS [
'django.contrib.admin'、
'django.contrib.auth'、
'django.contrib.contenttypes'、
'django.contrib.sessions'、
'django.contrib.messages'、
'django.contrib.staticfiles' 、
#は2に書き込むことができ
、 'app01.apps.App01Config'
、#'app01'
]二つのフレームモード
MVC
Mは:モデルデータベース関連の
Vを:ビューロジックに関連するビュー
Cを:URL異なるディストリビューションパスコントローラコントローラは機能の異なるビュー見つけ
MTV
モデルデータベース関連:M
T:テンプレートテンプレート、HTMLファイル、
V:ビューを表示ロジックに関連する
+のURLコントローラ異なるビュー機能を見つけるために異なるパス
MVVM