做爲Python最流行的web框架,django已經深受廣大Pythoner喜好,本站就是基於django實現的。所以,有必要對django的一些基礎知識作一些總結,以引領初學者進入Python的web世界。html
1.基礎知識
1.1.django命令解析
python manager.py 「commands」是django-admin命令的封裝,項目上用的更多的仍是python manager.py commands格式python
[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環境nginx
安裝pip,easy_install工具web
pip install django #安裝最新版本的Django,也能夠本身下載django源碼安裝sql
若是須要運行多個版本的Djanjo,能夠安裝虛擬環境:pip install virtualenv virtualenvwrappershell
1.3建立項目和應用數據庫
django-admin startproject project_name cd project_name python manager.py startapp app_name
把app名字加入到工程配置目錄下的settings.py中apache
1.4啓動項目django
python manager.py runserver ip_addr:port
1.5瀏覽器訪問json
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)