ディレクトリ
A、Webフレームワーク
(A)自然
- ベースB / S構造、すなわち、S側のブラウザと
- HTTPベースのメッセージングプロトコル
- 二つの部分にS端子とアプリケーションサーバ
(1)静的および動的ページ
- 動的ページ:データがリアルタイムで取得され
- 静的ページ:データが死んで書かれています
(2)wsgirefモジュール
- Djangoのモジュールの開発環境は、サーバーを行うには、このモジュールを使用することです
- あなたは、動的なページにWebページを作ることができます
- 代替S端的socket server部分
import time
from wsgiref.simple_server import make_server
# 将返回不同的内容部分封装成函数
def index(url):
with open("index.html", "r", encoding="utf8") as f:
s = f.read()
now = str(time.time())
s = s.replace("@@oo@@", now)
return bytes(s, encoding="utf8")
def home(url):
with open("home.html", "r", encoding="utf8") as f:
s = f.read()
return bytes(s, encoding="utf8")
# 定义一个url和实际要执行的函数的对应关系
list1 = [
("/index/", index),
("/home/", home),
]
def run_server(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html;charset=utf8'), ]) # 设置HTTP响应的状态码和头信息
url = environ['PATH_INFO'] # 取到用户输入的url
func = None
for i in list1:
if i[0] == url:
func = i[1]
break
if func:
response = func(url)
else:
response = b"404 not found!"
return [response, ]
if __name__ == '__main__':
httpd = make_server('127.0.0.1', 8090, run_server)
print("我在8090等你哦...")
httpd.serve_forever()
(3)Jinja2のモジュール
- サードパーティのモジュール、あなたがデータを照会することができ、動的なデータベースから、その後、ブラウザのレンダリングに内容を置き換えるHTML
- 原理:HTMLページ内の文法Jinja2のの規則に従って作成した文字列の置き換え、動的なコンテンツのリターンを達成するために指定された構文の内側に置き換えることができます
(B)Pythonの主流のフレームワーク
(1)ジャンゴ
- 大規模かつ包括的な、内蔵部品と機能より、空母の等価
- それはかさばる小規模なプロジェクトを表示します
(2)フラスコ
- 小さなあまり自身の構成要素および機能、サードパーティコンポーネントに依存レンジャーに対応
- ジャンゴよりも多くのサードパーティ製のモジュールとより、
(3)竜巻
非同期非ブロックであってもゲームサーバを開発するために使用することが
(4)の違い
A:socket部分
B:路由和视图匹配
C:模板语法
Django:
A用的是别人的(wsgiref模块)
B自己写的
C自己写的
flask:
A用的比人的(werkzeug)
B自己写的
C用的别人的 (jinja2模块)
tornado:
ABC都是自己写的
二、Djangoのプロフィール
(A)インストール
- インストール:
pip install django==1.11.11
- インストールが成功したかどうかを検出します。
django-admin
(B)使用
(1)コマンドラインを使用して
Djangoプロジェクトを作成します。
django-admin startproject 项目名(比如mysite)
アプリケーションの作成
プロジェクトフォルダディレクトリの下に切り替え
python3 manage.py startapp 应用名
スタートジャンゴプロジェクト
次のプロジェクトフォルダディレクトリに切り替えます。
python manage.py runserver
python manage.py runserver 127.0.0.1:8080
ご注意ください
- それは自動的にテンプレートを作成しないフォルダ
- テンプレートファイルのパスが自動的に設定されることはありません
(2)pycharm使用
あなたはバージョン3.7、バグ通訳のpythonを使用することはできません
使用を作成します
ツールはそれを開くために
run manaege.py task
、入力します。startapp
(C)アプリ
(1)コンセプト
Djangoのアプリは、主な機能のためのフレームワークを開発することです
大学としてDjangoプロジェクトは、その後、アプリは様々な大学の一つであります
大学は大学のための環境を提供し、すべての大学が複数の大学を持つことができます
(2)アプリケーションの登録
良いアプリを作成すると、Djangoのプロファイルで有効にするには登録が必要です
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 'app01' # 简便写法
'app01.apps.App01Config' # 最完整的写法
]
(D)Djangoのファイル関数
同じ名前のフォルダのファイル(1)プロジェクト
- settings.py:設定は、ユーザーの缶のconfigureをファイル
- urls.py:ルーティングとビュー機能の対応関係
名前のフォルダ(2)アプリケーション
- 移行フォルダ:すべてのデータベース関連の操作を記録
- 管理者のバックオフィスをadmin.py:django
- apps.py:アプリ関連の登録
- models.py:データベース関連のモデルクラス
- tests.py:テストファイル
- views.py:ビュー機能処理ビジネス・ロジック
(3)manage.py
ジャンゴファイルエントランス
(4)テンプレートフォルダ
HTMLファイルの保存
(E)スリーピース基礎
from django.shortcuts import HttpResponse, render,redirect
(1)はHttpResponse
内部ブラウザに戻るには、文字列パラメータを渡します
def index(request):
# 业务逻辑码
return HttpResponse('OK')
(2)レンダリング
着信データ・ディクショナリ内の人口htmlファイルやデータを返します
def index(request):
# 业务逻辑代码
return render(request,'index.html',{'name':'wick','hobby':['sleep','drink']})
(3)リダイレクト
指定されたURLにリダイレクト
def index(request):
# 业务逻辑码
return redirect('/home/')
(F)一般的なエラー
(1)「UnicodeEncodeErrorを...」
コンピュータ名が中国であるため、通常、英語への再起動後に変更されました
(2)「にSyntaxError:ジェネレータ式は括弧で囲まなければなりません」
通常ので使用python3.7バージョンの、このバージョンはジャンゴでの互換性の問題を持っています