您好,登錄后才能下訂單哦!
作為Python最流行的web框架,django已經(jīng)深受廣大Pythoner喜愛,本站就是基于django實(shí)現(xiàn)的。因此,有必要對(duì)django的一些基礎(chǔ)知識(shí)做一些總結(jié),以引領(lǐng)初學(xué)者進(jìn)入Python的web世界。
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
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
2)在/etc/apache2/sites-available目錄下建立yue.conf文件
root@abellee:/etc/apache2/sites-available# cat yue.conf
<VirtualHost *:8888>
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
</VirtualHost>
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)
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。