在必定的時間內,有限的技術狀況下,建設一個高質量的網站,Django幾乎成了惟一的方案。
Django把全部可能性都考慮到了,從這種程度上看複雜就意味着全面,畢竟時間更重要!html
強大的數據庫功能python
自帶的強大的後臺功能mysql
優雅的網址程序員
模板系統web
緩存系統sql
國際化數據庫
國外:Disqus、Pinterest、Instagram、NASA Science等
國內:豆瓣、知乎、餓了麼等django
一、安裝pip
二、安裝Django
三、安裝pyflakes
四、Atom安裝插件:atom-django、autocomplete-python、platformio-ide-terminal(也能夠用pycharm)瀏覽器
request ---->Django Web------>response
request——————>urls——————>views<——————models | | ↓ templates
models-----數據: 做爲數據庫的代理人,經過 model 操做數據庫。
Templates-----模板: 把數據填充進網頁中進行渲染。
Views-----視圖:把渲染好的網頁返回給使用者,讓咱們能夠在瀏覽器中看到網頁。
Urls-----連接:找到每一個 url 對應的 view。緩存
複雜的功能,分開能夠單獨的職責進行處理,快速找到錯誤,方便處理和維護。
網站建立的流程:P ---> A ---> D ---> M ---> V ---> T ---> U
P: 建立project django-admin startproject firstsite
A: 建立APP python manage.py startapp firstapp
D: 建立數據庫 python manage.py migrate
M: 建立數據庫的表 models建立相關模型類class
V: 建立視圖 views建立相關視圖def
T: 建立模板 templates/static 用模板語言進行修改
U: 建立對應的url正則關係 設置訪問url
django-admin startproject firstsite
生成如下文件:
firstsite ├── manage.py └── firstsite ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py
文件解釋:
manage.py:django中命令的運行文件,通常格式爲:python manage.py 命令名稱。
__init__.py:是python包的目錄結構必須的。
setting.py:Django配置全局變量和屬性的文件,好比 DEBUG 的開關,靜態文件的位置等。
urls.py:網址入口,關聯到對應的views.py中的一個函數(或者generic類),訪問網址就對應一個函數。
wsgi.py:部署服務器時用到的wsgi.py文件。
settings內部結構:
DEBUG = True時,頁面發生錯誤會直接拋給前臺,便於程序員進行修改。在真實環境中須要關閉,DEBUG=False。
當 DEBUG=False 時,ALLOW_HOSTS這個爲必填項,若是不想輸入,能夠用 ALLOW_HOSTS = ['*'] 來容許全部的訪問。
INSTALLED_APPS,用戶新建了APP須要在該欄目下進行註冊。
TEMPLATES:若新建了templates文件夾,須要修改DIRS地址:
'DIRS': [os.path.join(BASE_DIR, 'templates').replace('\\', '/')],
DATABASES默認的是:sqlite3, 修改成mysql以下:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'testdb', 'USER':'younger', 'PASSWORD':'123', 'HOST':'', 'PORT':'', } }
LANGUAGE_CODE = 'en-us', 中文修改成'zh-Hans'。
python manage.py startapp firstapp
(項目站點的模塊,一個project下面能夠有多個app)
生成如下文件: migrations: 生成數據庫的py腳本文件夾。 __init__: 是python包的目錄結構必須的。 admin.py:後臺,能夠用不多量的代碼就擁有一個強大的後臺。 models.py: 與數據庫操做相關,存入或讀取數據時用到這個,固然用不到數據庫的時候 你能夠不使用。 views.py: 處理用戶發出的請求,從urls.py中對應過來, 經過渲染templates中的網頁能夠將顯示內容,好比登錄後的用戶名,用戶請求的數據,輸出到網頁。 tests.py: 網站的測試代碼。
新建的app若是不加到INSTALL_APPS 中的話, django 就不能自動找到app中的模板文件(app-name/templates/下的文件)和靜態文件(app-name/static/中的文件) 。
python mange.py makemigrations
makemigrations命令生成的文件會存到migrations/目錄下,生成複雜的建立數據庫的語句。
python mange.py migrate
以前的makemigrations操做只是生成migration文件,尚未對數據庫進行操做,接下來執行migrate命令,完成數據的合併和修改。
makemigrations vs migrate makemigrations的意思是將model編譯成mysql能夠理解的sql語句,存放在那個migrations文件夾裏面。 migrate是將這個最新生成的py文件執行,讓數據庫可以按照sql語句進行表的修改。因爲sql語句中有不少的標點符號是和python衝突的,常常須要轉義數據庫才能執行。所以直接使用model模塊能夠省去你不少書寫sql語句的煩惱。
python mange.py runserver 臨時測試的服務器
t = Template(html_string) # 用來把 html 字符變成模板,相似於打孔。 c = Context({'person':person}) # 建立一個上下文 context,django 規定 context 必須是字典的形式,相似於造補丁。 web_page = t.render(c) # 對模板進行渲染,把上下文渲染到模板裏面,相似於打補丁。 return HTTPResponse(web_page) # web_page表示的網頁字符串轉化具體可見的網頁response。
拓展閱讀:
一、《圖解HTTP》筆記
二、Django 基礎教程(自強學堂)
備註
該筆記源自網易微專業《Python web開發》1.一、1.2節
本文由EverFighting創做,採用 知識共享署名 3.0 中國大陸許可協議進行許可。