(一)最小的Django

本文为做者原创,转载请注明出处(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

  WSGI:web服务器网关接口,是web服务器和Django应用框架通讯的协议规范(包括其余框架如mod_wsgi CherryPy Tornado等),Django经过get_wsgi_application建立WSGI应用。 
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

  在咱们的xxx.py中,DEBUG是开启状态的,SECRET_KEY是非随机的,这些都不适用生产环境,因此这里引入另外一个问题:Django的项目该如何管理项目的配置问题(开发-阶段运行-造成产品)。一般咱们把setting.py转换为一个包并为每一个环境建立模块,这样解决不一样的环境配置文件,在咱们的xxx.py文件中咱们只有一个setting模块,为了配置不一样的运行环境,例如DEBUG的开关,作出以下修改: 
###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
  
4、再次运行
  再次运行时,咱们能够在bash中使用django自带的服务器或者使用咱们刚才安装的gunicorn:
###配置环境变量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个进程

 

 
5、使用模板
   修改一份模板代码,这里只替换了随机生成的SECRET_KEY:
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)
相关文章
相关标签/搜索