环境设置和本地服务器安装
一般使用 virtualenv本地有模拟服务器,dev_server
修改 dev_server (git clone http://github.com/SAEPython/saepythondevguide.git)
安装 dev_server
dev_server 修改如下
1. saecloud.bat 改成
e:\webapp\envs\sae\Scripts\python.exe "%~dp0\saecloud" %*
也就是使用虚拟环境的 python
2. 如果是 windows 系统,还需修改 saecloud 文件(实际上是一个 python 文件)
run函数内(L35)
close_fds=False
如果出现两个依赖模块无法下载
argparse 和 PyYAML,请手动安装
另外 werkzeug 需要0.7.1版本
>pip install werkzeug==0.7.1
文件系统
将版本管理和部署分开,前者使用 git,后者使用 saecloud
在线创建一个 some_app
修改 conf.yaml
name: some_app
version: 1
然后使用
$saecloud deploy --username xxx@abc.com --password 安全秘密 (deploy 自动找到版本)
或
$saecloud export version_number --username xxx@abc.com --password 安全秘密
首次要用户名密码,可能以后不用
由于使用 saecloud/git,本地不再用数字文件夹表示版本
文件系统:
支持三个静态文件目录,由文件服务器直接服务。
/media
/static
/favicon.ico
其他所有请求,都被路由到应用。
鉴于此,用户上传的文件,也要放在 static 下
MEDIA_ROOT = os.path.join(os.path.dirname(__file__),'../static/user').replace('\\','/') # URL that handles the media served from MEDIA_ROOT. Make sure to use a # trailing slash if there is a path component (optional in other cases). # Examples: "http://media.lawrence.com", "http://example.com/media/" MEDIA_URL = '/static/user/'由于文件服务器没有访问控制,若是有需要访问控制的用户文件,只能webapp处理?
使用步骤
1. 创建 django project(名字可以不同于 app 名)
在 app 目录
$python e:\webapp\envs\sae\Lib\site-packages\django\bin\django-admin.py startproject
project-name .
2. 修改 project-name/wsgi.py
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "tickle.settings")
改成
os.environ["DJANGO_SETTINGS_MODULE"]="tickle.settings"
这一步可能要可能不要,如果提示 settings 找不到,就需要
3. 运行 dev_server
$python e:\webapp\envs\sae\Scripts\dev_server.py
4.
python manage.py startapp xxxx
config.yaml
name: exsae version: 1 libraries: - name: "django" version: "1.4" handlers: - url: /static static_dir: static - url: /media static_dir: media
数据库导入
使用 mysqldump,参见SAE 不支持 lock write,加 --skip-add-locks 参数
$ mysqldump -u apple2101 -p -t --skip-add-locks sae books_author books_book boo
ks_book_authors books_publisher > cars.sql
也可以使用如下方法
本地开发后,在 mysite 文件夹下 $ python manage.py sqlall all-apps-list > some-db-file all-apps-list 指所有安装的 apps,比如 auth contenttypes sessions sites messages admin cars (注意没有前缀) 然后在 SAE 的管理后台导入 some-db-file django-admin.py and manage.py Prints the CREATE TABLE and initial-data SQL statements for the given app name(s).这种方法好像不能导出数据,只导出数据表?
本地开发的 mysql 问题
1. 本地开发依赖于版本文件夹下的 app.py 文件。在线时,并不用到该文件2. 建立 config.py 文件,用于保存本地数据库信息。在 settings 中使用,在 settings 中采用 try except 模式进行导入 sae.const
superuser
因为已经知道如何导入数据,所以不推荐下述办法。因为没有找到导入数据的办法,建立superuser的方法,进入SAE后台手动管理数据库,手动添加superuser is_active, is_stuff, is_superuser 由于django并不保存密码明文,而是保存sha,所以要先本地建立superuser,dump 数据找到密码 sha. $ django-admin.py dumpdata --pythonpath=/e/webapp/sae/testkv/2/mysite --setting s=settings auth > log 进入本地管理界面也可以找到这个sha 然后到SAE后台手动添加这个sha
字符集
python 文件不要写中文,python2x默认为asciihtml utf8
数据库:
在管理界面创建数据表,默认字符集为utf8,也可设为其他编码。
如果你是在本地开发环境建立的数据表,请确保使用utf8。在管理界面导入本地数据库时, 也可完成字符集的转换。
0 comments:
Post a Comment