作為Python最流行的web框架,django已經(jīng)深受廣大Pythoner喜愛,本站就是基于django實(shí)現(xiàn)的。因此,有必要對(duì)django的一些基礎(chǔ)知識(shí)做一些總結(jié),以引領(lǐng)初學(xué)者進(jìn)入Python的web世界。
網(wǎng)站設(shè)計(jì)、網(wǎng)站制作服務(wù)團(tuán)隊(duì)是一支充滿著熱情的團(tuán)隊(duì),執(zhí)著、敏銳、追求更好,是創(chuàng)新互聯(lián)的標(biāo)準(zhǔn)與要求,同時(shí)竭誠(chéng)為客戶提供服務(wù)是我們的理念。創(chuàng)新互聯(lián)公司把每個(gè)網(wǎng)站當(dāng)做一個(gè)產(chǎn)品來開發(fā),精雕細(xì)琢,追求一名工匠心中的細(xì)致,我們更用心!
1.基礎(chǔ)知識(shí)
1.1.django命令解析
python manager.py “commands”是django-admin命令的封裝,項(xiàng)目上用的更多的還是python manager.py commands格式
[auth]
changepassword:修改admin密碼
createsuperuser:創(chuàng)建超級(jí)管理員
[django]
check:檢查項(xiàng)目狀態(tài),包括:數(shù)據(jù)庫(kù)模型狀態(tài)
startapp:創(chuàng)建新的應(yīng)用
runserver:運(yùn)行服務(wù)
makemigrations:告訴django,對(duì)于模型做了一些更改,并且將這些更改存儲(chǔ)為遷移文件,其實(shí)是生成一些python的數(shù)據(jù)庫(kù)管理腳本
migrate:運(yùn)行遷移文件,并自動(dòng)管理數(shù)據(jù)庫(kù),其實(shí)就是運(yùn)行數(shù)據(jù)庫(kù)管理腳本,創(chuàng)建數(shù)據(jù)庫(kù),表等
dumpdata:導(dǎo)出數(shù)據(jù)到j(luò)son文件
loaddata:從json文件導(dǎo)入數(shù)據(jù)
shell:?jiǎn)?dòng)django的shell,設(shè)置了相關(guān)的環(huán)境變量,使用起來很方便,其實(shí)本質(zhì)上,還是個(gè)python的shell
1.2安裝環(huán)境
首先需要有Python dev環(huán)境
安裝pip,easy_install工具
pip install django #安裝最新版本的Django,也可以自己下載django源碼安裝
如果需要運(yùn)行多個(gè)版本的Djanjo,可以安裝虛擬環(huán)境:pip install virtualenv virtualenvwrapper
1.3創(chuàng)建項(xiàng)目和應(yīng)用
django-admin startproject project_name
cd project_name
python manager.py startapp app_name
把a(bǔ)pp名字加入到工程配置目錄下的settings.py中
1.4啟動(dòng)項(xiàng)目
python manager.py runserver ip_addr:port
1.5瀏覽器訪問
http://ip_addr:port/
這是開發(fā)模式下的訪問方式,在生產(chǎn)環(huán)境,需要部署到apache或nginx。
1.6.工程目錄詳解
bogon:zqxt_tmpl david$ tree
.
├── db.sqlite3 #數(shù)據(jù)庫(kù)文件
├── learn #app名稱
│ ├── __init__.py #模塊初始化文件
│ ├── __init__.pyc
│ ├── admin.py #注冊(cè)module
│ ├── admin.pyc
│ ├── apps.py #app配置
│ ├── migrations #數(shù)據(jù)庫(kù)遷移
│ │ ├── __init__.py
│ │ └── __init__.pyc
│ ├── models.py #數(shù)據(jù)庫(kù)模塊,讀寫數(shù)據(jù)庫(kù)使用
│ ├── models.pyc
│ ├── templates #html模板目錄
│ │ └── home.html #html文件
│ ├── tests.py #測(cè)試代碼
│ ├── views.py #業(yè)務(wù)邏輯處理,處理http請(qǐng)求
│ └── views.pyc
├── manage.py #項(xiàng)目管理,內(nèi)含多個(gè)命令,可以創(chuàng)建app,啟動(dòng)項(xiàng)目,遷移數(shù)據(jù)庫(kù)等等
└── zqxt_tmpl #項(xiàng)目目錄
├── __init__.py #項(xiàng)目文件
├── __init__.pyc
├── settings.py #項(xiàng)目設(shè)置
├── settings.pyc
├── urls.py #項(xiàng)目URL處理,網(wǎng)址入口
├── urls.pyc
├── wsgi.py #項(xiàng)目發(fā)布后,web服務(wù)器使用
└── wsgi.pyc
此外,還有form.py,完成表單處理工作
2.將django項(xiàng)目部署到apache
2.1將django工程拷貝到/var/www/(也可以是別的目錄)
以yue工程為例:
cp -r yue /var/www/
收集靜態(tài)文件,在/var/www/yue/執(zhí)行:
python manage.py collectstatic
2.2修改Apache2配置文件
1)ports.conf添加listen端口
root@abellee:/etc/apache2# cat ports.conf
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf
Listen 80
Listen 8888
Listen 443
Listen 443
2)在/etc/apache2/sites-available目錄下建立yue.conf文件
root@abellee:/etc/apache2/sites-available# cat yue.conf
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
WSGIScriptAlias / /var/www/yue/yue/wsgi.py
Alias /static /var/www/yue/collected_static
3)在/etc/apache2/sites-enabled目錄下建立軟鏈接,重啟服務(wù)
yue.conf -> ../sites-available/yue.conf
重啟apache2服務(wù)
瀏覽器執(zhí)行: http://127.0.0.1:8888/
3.FAQ
注意:部署過程中會(huì)遇到問題
1.首先,必須保證: python /var/www/yue/yue/wsgi.py 不報(bào)錯(cuò)
2.如果發(fā)現(xiàn)django 403錯(cuò)誤,請(qǐng)?jiān)趛ue/setting.py中刪除csrf保護(hù)機(jī)制,直接在setting.py中搜索setting
3.需要添加django工程目錄到Python的path中
wsgi.py文件中添加:
import sys
paths =["/var/www/yue"]
for path in paths:
if path not in sys.path:
sys.path.append(path)