开发环境:Ubuntu11.10+python2.7+django1.4+MySql
Django是python一个很优秀的Web网络框架。更多关于django的入门教程,请自行谷歌教程。需要注意的是,django目前的最新版本是1.6.2,但SAE支持的版本只有1.2和1.4,而且默认支持的版本是1.2,所以假如要用1.4版本的话需要在项目的config.yaml文件声明。
好了,废话不多说。首先先建立一个django project,切换到当前目录,在模拟终端输入(自己修改工程名字,用自己名字命名工程实在是太自恋了,虽然我不是这种人,但我一时找不到好听的工程名,就用自己的名字,修改一下就行了。)
$django-admin startproject xinjie
之后在目录下就可以看到有一个新的文件夹blog,文件夹的形式是这样的:
xinjie/ manage.py xinjie/ init.py settings.py urls.py wsgi.py至此,我们便建立了一个django工程,但这个工程还没有任何的应用,所以接下来我们要做的便是建立一个APP。在终端输入
$../../ cd xinjie/ $../../xinjie/ python manage.py startapp myblog在工程文件夹便会多一个myblog的文件夹,现在blog的文件夹应该是这样子的。
xinjie/ manage.py xinjie/ init.py settings.py urls.py wsgi.py xblog/ init.py models.py views.py这只是在本地运行的django,要将django工程放上SAE,我们还需要config.yaml和index.wsgi两个配置文件。
$../xinjie/vim config.yaml在文件中写入:
name: xyblog version: 1在libraries中说明了用的是django的1.4版本,假如用的是默认的1.2版本,则无需注明。在文件中要特别注意缩进,python这种语言的层次全靠缩进。写完之后保存退出。同样的方法,libraries: - name: "django" version: "1.4"
handler: - url: /static/ static_path: static
$../xinjie/ vim index.wsgi在文件中写入:
import os import sys import sae from xinjie import wsgi这个文件是配置应用接口的。写入保存。root = os.path.dirname(file)
sys.path.insert(0, os.path.join(root, 'site-packages')) application = sae.create_wsgi_app(wsgi.application)
写好了在配置文件,现在就要来写工程的配置文件。工程的配置文件在工程blog/blog目录下的settings.py。文件内容要做如下的修改。需要注意的是,在python文件中包含中文字符,所以所有的.py文件最前面都要加#-- coding: utf-8 --
首先便是设置数据库参数,在运行程序之前要记得在MySql创建一个APP要用到的数据库,比如我的就叫,xblog.
from os import environ import osDEBUG = False #在本地开发阶段切记要保持默认的True,这样子可以省下很多麻烦。 TEMPLATE_DEBUG = DEBUG
ADMINS = ( # ('Your Name', 'your_email@example.com'), )
MANAGERS = ADMINS
if 'SERVER_SOFTWARE' in environ:#区分在SAE还是在线下开发。 from sae.const import ( MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASS, MYSQL_DB) else: MYSQL_HOST='localhost' MYSQL_PORT = '3306'#数据库的端口,MySql通常是3306. MYSQL_USER = 'root'#数据库的USER,MySql通常是root MYSQL_PASS = 'YOUR_DATABASE_PASSWORD'#你数据库的密码 MYSQL_DB = 'YOUR_APP_DATABASE_NAME'#应用在数据库中的名字
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 'NAME': MYSQL_DB, # Or path to database file if using sqlite3. 'USER': MYSQL_USER, # Not used with sqlite3. 'PASSWORD': MYSQL_PASS, # Not used with sqlite3. 'HOST':MYSQL_HOST, # Set to empty string for localhost. Not used with sqlite3. 'PORT': MYSQL_PORT, # Set to empty string for default. Not used with sqlite3. } }
修改默认的时区和语言。
TIME_ZONE = 'Asia/Shanghai' #这个要修改默认值,因为是在中国大陆,假如不再中国大陆则无需修改。LANGUAGE_CODE = 'zh-cn' #修改了上面的设置,这个也要跟着修改。
修改静态文件的相对路径。
STATIC_ROOT = os.path.join(os.path.dirname(file), 'static')STATIC_URL = '/static/'
接下来修改中间层。
MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.locale.LocaleMiddleware',#这个记得要修改。 'django.contrib.redirects.middleware.RedirectFallbackMiddleware', # Uncomment the next line for simple clickjacking protection: # 'django.middleware.clickjacking.XFrameOptionsMiddleware', )修改模板所在的相对位置。
TEMPLATE_DIRS = ( # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. os.path.join(os.path.dirname(file), '../templates'), )现在来修改一个重量级的设置,这个设置便是这个工程中所要用到的APP,无论是自带的还是后来添加的,都必须在这里注册。
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.redirects', # Uncomment the next line to enable the admin: 'django.contrib.admin', # Uncomment the next line to enable admin documentation: 'django.contrib.admindocs', 'xblog', 'django.contrib.markup', )按照修改设置,我们的工程初始化工作便完成了。