在新浪App Engine里注册、实名之后会有2500个芸豆(我觉得这个名字好),就可以创建应用了
没学过php我先拿python试试吧,毕竟业务逻辑还是比较少的,python正合适。以前帮师弟改过python+django建的微信服务端,觉得django做这种小型的网站很合适,毕竟页面简单,一张图片,几个按钮和一个评论列表,一个评论框(目前想到的)。
SAE目前支持的版本是django1.2,1.4,1.5,django最新版本是1.6.2,所以应当用较新的django1.55版。建立django服务器的方法网上都有,不再赘述,1.55里貌似没有说首页该怎么整,总出现 It worked,我就在这儿写一下吧:
1.在urls.py里为urlpatterns元组添加一项(其中app替换成你服务器的名字),注意不要丢逗号(当然最后一行时不用写,但不保倒数第二行没了逗号)
url(r'^$', 'app.views.home', name='home'),
2.在urls.py那个目录下建一个views.py,views.py里建一个home函数(注:上面的那句url意思就是如果输入的只有网址,那就在app服务器根目录调用views.py里的home函数),如果包含中文千万要加第一行#-*-coding=utf-8-*-并用文本编辑器将文本文件编码成utf-8(windows记事本默认是ascii编码,注意另存为的时候选utf-8)
#-*-coding=utf-8-*-
from django.shortcuts import render
from django.http import HttpResponse
def home(request):
htmlStr='''<html><head></head><body></body></html>''' #自己写html
return HttpResponse(htmlStr)
3.运行这个服务器,浏览器里输127.0.0.1:800(默认的8000端口),就能看到刚才htmlStr编出的html页面了
SAE可以用SVN管理版本,但是建立好本地可用的服务器还不够,还需要建立config.yaml和index.wsgi俩文件对SAE服务器进行配置
config.yaml配置库(现在只用到了django,还是1.5版的(大版本)):
libraries:
- name: "django"
version: "1.5"
index.wsgi配置服务器的路径(appname 用你的服务器名替换):
import sys
import os.path
os.environ['DJANGO_SETTINGS_MODULE'] = 'appname.settings'
sys.path.append(os.path.join(os.path.dirname(__file__), 'appname'))
import sae
from appname import wsgi
application = sae.create_wsgi_app(wsgi.application)
把这两个文件放到和manage.py以及你服务器的文件夹(appname)在同一个目录底下,层级结构就是
/
|----manage.py
|----index.wsgi
|----config.yaml
|----appname
|----views.py
|----urls.py
|----models.py
|----__init__.py
|----wsgi.py
|----settings.py
上线运行就能看到实际的运行效果
建立一个二级页面,比如Test,在django里叫建立应用 manage.py startapp Test ,在根的urls.py里urlpatterns元组添加一项
url(r'^Test/','appname.Test.views.home'),
此时就可以发现在appname文件夹下出现了Test文件夹,该文件夹下也有views.py等文件
/
|----manage.py
|----index.wsgi
|----config.yaml
|----appname
|----views.py
|----urls.py
|----models.py
|----__init__.py
|----wsgi.py
|----settings.py
|----Test|----views.py
|----models.py
|----__init__.py
Test/views.py里可以直接用根下的views.py做个测试,浏览器里输入sae分配的地址,比如 http://appname.sinaapp.com/Test 就可以看到Test下views.py视图了
后来我想添加图片,这东西试了一中午-_-!
django里的图片、CSS等等算是静态文件,调用的话需要在服务器文件夹的根目录的urls.py配置路径,比如我希望用一个 0.png 这个文件在首页显示。
网上找的http://hi.baidu.com/shishusaiwai/item/a25455cc7a71a220e90f2e1d里说的urls.py的urlpatterns元组添加
(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/path/to/media'}),
是对的,但是对于'document_root'调了一中午才弄出来,对于sae的根目录到底是什么,似乎他用的版本和我的不太一样,我括号前面加了 url 我用os.path里找的根目录:
先 import os.path
url(r'^site_media/(?P<path>.*)','django.views.static.serve',{'document_root':os.path.join(os.path.dirname(__file__), 'static/media').replace('\\','/')}),
目录层级:
/
|----manage.py
|----index.wsgi
|----config.yaml
|----appname
|----views.py
|----urls.py
|----models.py
|----__init__.py
|----wsgi.py
|----settings.py
|----Test|----views.py
|----models.py
|----__init__.py
|----static|----media
|---- 0.png
views.py里返回的html文本是 <img src="src="/site_media/0.png"/>,而该图片的地址就是 http://appname.sinaapp.com/site_media/0.png
注意:urlpatterns里正则表达式不能是 '^media/',因为media是django内置的,我上面用了site_media
视图里执行代码似乎还是有点儿问题,我再慢慢看吧以后找到确认的os.path.dirname(__file__)值我再传来吧