1. 程式人生 > >Python-Django基礎知識

Python-Django基礎知識

als 工具 block mode 方式 生成 項目管理 刪除 auth

作為Python最流行的web框架,django已經深受廣大Pythoner喜愛,本站就是基於django實現的。因此,有必要對django的一些基礎知識做一些總結,以引領初學者進入Python的web世界。

1.基礎知識
1.1.django命令解析
python manager.py “commands”是django-admin命令的封裝,項目上用的更多的還是python manager.py commands格式

[auth]
changepassword:修改admin密碼
createsuperuser:創建超級管理員
[django]
check:檢查項目狀態,包括:數據庫模型狀態
startapp:創建新的應用
runserver:運行服務
makemigrations:告訴django,對於模型做了一些更改,並且將這些更改存儲為遷移文件,其實是生成一些python的數據庫管理腳本
migrate:運行遷移文件,並自動管理數據庫,其實就是運行數據庫管理腳本,創建數據庫,表等
dumpdata:導出數據到json文件
loaddata:從json文件導入數據
shell:啟動django的shell,設置了相關的環境變量,使用起來很方便,其實本質上,還是個python的shell

1.2安裝環境
首先需要有Python dev環境

安裝pip,easy_install工具

pip install django #安裝最新版本的Django,也可以自己下載django源碼安裝

如果需要運行多個版本的Djanjo,可以安裝虛擬環境:pip install virtualenv virtualenvwrapper

1.3創建項目和應用

django-admin startproject project_name
cd project_name
python manager.py startapp app_name

把app名字加入到工程配置目錄下的settings.py中

1.4啟動項目

python manager.py runserver ip_addr:port

1.5瀏覽器訪問

http://ip_addr:port/

這是開發模式下的訪問方式,在生產環境,需要部署到apache或nginx。

1.6.工程目錄詳解


bogon:zqxt_tmpl david$ tree
.
├── db.sqlite3  #數據庫文件
├── learn  #app名稱
│   ├── __init__.py #模塊初始化文件
│   ├── __init__.pyc
│   ├── admin.py  #註冊module
│   ├── admin.pyc
│   ├── apps.py #app配置
│   ├── migrations #數據庫遷移
│   │   ├── __init__.py
│   │   └── __init__.pyc
│   ├── models.py #數據庫模塊,讀寫數據庫使用
│   ├── models.pyc
│   ├── templates #html模板目錄
│   │   └── home.html #html文件
│   ├── tests.py #測試代碼
│   ├── views.py #業務邏輯處理,處理http請求
│   └── views.pyc
├── manage.py #項目管理,內含多個命令,可以創建app,啟動項目,遷移數據庫等等
└── zqxt_tmpl #項目目錄
    ├── __init__.py #項目文件
    ├── __init__.pyc
    ├── settings.py #項目設置
    ├── settings.pyc
    ├── urls.py #項目URL處理,網址入口
    ├── urls.pyc 
    ├── wsgi.py #項目發布後,web服務器使用
    └── wsgi.pyc
此外,還有form.py,完成表單處理工作

2.將django項目部署到apache
2.1將django工程拷貝到/var/www/(也可以是別的目錄)
以yue工程為例:

cp -r yue /var/www/
收集靜態文件,在/var/www/yue/執行:
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目錄下建立軟鏈接,重啟服務

yue.conf -> ../sites-available/yue.conf
重啟apache2服務
瀏覽器執行: http://127.0.0.1:8888/

3.FAQ
註意:部署過程中會遇到問題

1.首先,必須保證: python /var/www/yue/yue/wsgi.py 不報錯
2.如果發現django 403錯誤,請在yue/setting.py中刪除csrf保護機制,直接在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)

Python-Django基礎知識