用了半天时间,把Django的基本结构同步到SAE上了,里边比较麻烦的地方如下:
1. 数据库的同步; SAE用的是SQL数据库,默认使用下面的用户名、密码等变量(SAE为我们做了很多工作)
首先需要修改mysite下的setting.py,以实现线上和线下操作:
import os
if 'SERVER_SOFTWARE' in os.environ:
from sae.const import (
MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASS, MYSQL_DB
)
else:
MYSQL_HOST = 'localhost'
MYSQL_PORT = '3306'
MYSQL_USER = 'XXXX'
MYSQL_PASS = 'XXXXXX'
MYSQL_DB = 'blog'
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.
}
}
然后,在本地创建数据库: python manage.py syncdb
接下来把本地mysql中对应的数据库导出(sql格式), 命令: mysqldump -hlocalhost -uroot -p mblog >database-name.sql
最后登录 www.sinaapp.com, 进入应用 ->MySQL管理,选择图形界面下的Import,把sql文件导进去。这里还有一个小问题是上面命令导出的sql文件里会有Lock table, Unlock table的操作,SAE是不识别的,需要删掉。
2. 登录 yoursite.com/admin,没有CSS效果的解决办法
1)修改 settings.py
#重新定向admin模块的CSS路径
ADMIN_MEDIA_PREFIX = '/static/admin/'
#指定静态文件的位置,即CSS文件的位置
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').replace('\\','/'),
)