本文爲做者原創,轉載請註明出處(http://www.cnblogs.com/mar-q/)by 負贔屓python
本文基本內容均出自《Lightweight Django》(中文爲《輕量級Django》),結合了必定的我的理解,書中的源碼地址:https://github.com/lightweightdjango/examples,我使用的Django版本爲1.11.3,並對每章的代碼進行了復現。git
1、 最小的django代碼 github
# -*- coding: utf-8 -*- import os import sys from django.http import HttpResponse from django.conf.urls import url from django.conf import settings ###引入試圖模塊(對應views.py) def index(req): return HttpResponse('HELLO') ###引入url模塊(對應url.py) urlpatterns = [ url(u'^$', index), ] ###setting模塊 settings.configure( DEBUG=True, SECRET_KEY='thisissecretkey', ROOT_URLCONF=__name__, MIDDLEWARE=[ 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] ) if __name__ == '__main__': ###對應manager.py from django.core.management import execute_from_command_line execute_from_command_line(sys.argv)
保存並運行web
python xxx.py runserver
2、爲代碼添加WSGI應用django
from django.core.wsgi import get_wsgi_application ##在xxx.py中引入包文件 application = get_wsgi_application()
此時xxx.py已經能夠接入WSGI服務器了,選擇Gunicorn做爲WSGI服務器。這裏的環境是mac或者Linux,若是是Windows環境,建議使用mod_wsgi,配合Apache搭建服務器,配置麻煩一些。bash
pip install gunicorn
運行服務器:服務器
gunicorn xxx --log-file=-
3、配置不一樣的運行環境app
###setting模塊 DEBUG=os.environ.get('DEBUG','on')=='on' SECRET_KEY=os.environ.get('SECRET_KEY',os.urandom(32)) settings.configure( DEBUG=DEBUG, SECRET_KEY=SECRET_KEY,
同時,咱們還須要遠端訪問,聯想以前在setting.py中對於ALLOWED_HOST進行設置,咱們在這裏也須要進行添加,修改後的setting模塊: 框架
###setting模塊 DEBUG=os.environ.get('DEBUG','on')=='on' SECRET_KEY=os.environ.get('SECRET_KEY',os.urandom(32)) ALLOWED_HOST=[‘*’] settings.configure( DEBUG=DEBUG, SECRET_KEY=SECRET_KEY, ALLOWED_HOST=ALLOWED_HOST
###配置環境變量DEBUG export DEBUG=off ##關閉了DEBUG,注意這是在mac或者Linux下,如果Windows環境請使用set進行環境變量設置:set DEBUG=off ### SECRET_KEY若是沒有設置, python xxx.py runserver 0.0.0.0:8000 ###或者使用gunicorn unicorn -w 4 -b 0.0.0.0:8000 xxx —log-file=- ###-w 4表示開啓4個進程
SECRET_KEY=os.environ.get('SECRET_KEY’,’{{secret_key}}')
使用這個隨機祕鑰的替換方式,會爲每個項目生成一個固定的祕鑰,同時又確保項目之間祕鑰不一樣。ok,咱們將修改的xxx.py放到template文件夾中並命名爲template.py,執行startproject(注意執行的路徑):dom
django-admin.py startproject foo —template=templat
import os import sys from django.http import HttpResponse from django.conf import settings from django.conf.urls import url from django.core.wsgi import get_wsgi_application def index(req): return HttpResponse('HelloWorld') urlpatterns=[ url(u'^$',index), ] DEBUG = os.environ.get('DEBUG','on')=='on' SECRET_KEY = os.environ.get('SECRET_KEY','{{secret_key}}') ALLOWED_HOSTS=['*'] settings.configure( DEBUG=DEBUG, SECRET_KEY=SECRET_KEY, ROOT_URLCONF=__name__, ALLOWED_HOSTS=ALLOWED_HOSTS, MIDDLEWARE=[ 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] ) application = get_wsgi_application() if __name__ == "__main__": from django.core.management import execute_from_command_line execute_from_command_line(sys.argv)