Tairan's Story

「知之真切笃实处即是行,行之明觉精察处即是知,知行工夫不可离。」


如何在Alwaysdata上部署Django应用

Alwaysdata是一个法国的ISP,提供相当不错的VPS,共享主机等服务,而且免费的项目也相当的好,可惜你需要在墙外才能享受到如此高档的服务。

在Alwaysdata的wiki上已经详细说明了如何部署Django的应用,但是如果一丝不苟的依葫芦画瓢你未必能一次成功,因为这篇文档还遗漏了一点。

你还需要在project的根目录中放一个.htaccess 如下

project
     |-- apps
     |-- public
            |-- django.fcgi
            |-- .htaccess
     |-- .htaccess
     |-- settings.py
     |-- manage.py

而这个 .htaccess 的内容是:

AddHandler fastcgi-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ public/django.fcgi/$1 [QSA,L]
No Comments » | Tags: | Categories: Technology, 我的声音
The note of learning Django

django 学习笔记

使用 apache2.2 + mod_python 部署django 项目

#装载模块
LoadModules python_module modules/mod_python.so

#声明虚拟主机
NameVirtualHost 127.0.0.1:80

#定义虚拟主机
<VirtualHost 127.0.0.1:80>
<Location />
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonDebug On
PythonPath “['D:workspace'] + sys.path”
</Location>
</VirtualHost>

SetEnv DJANGO_SETTINGS_MODULE mysite.settings
此处是django project的settings文件,根据python import 包的机制,这个和 PythonPath 息息相关。
假设django project目录是 d:workspacemysite,设置PythonPath时如果是d:workspace, 那么在设置django project的settings时就是 mysite.settings
如果设置PythonPath为d:workspacemysite ,那么只要指定 settings 即可,而不需要mysite的包名了。
此处还影响着 settings.py 文件中的 ROOT_URLCONF

#TODO使用虚拟目录部署

配置 Django project 中的静态资源 css js jpg 等

通过阅读他人的源码,把这个问题也明白了。传说 Django 不建议在 settings 设置 MEIDA_ROOT 等相关静态文件配置。那么我们在模板中如何使用这些文件呢。如,在模板中我们使用 /media/css/layout.css ,web server怎么样才能知道这个路径在什么地方呢?
当然,Django中提供了相应的解决办法:通过url映射。在urls.py中做一下设置
urlpatterns += patterns(”,
(r’^media/(?P<path>.*)$’, ‘django.views.static.serve’, {‘document_root’:'d:/templates/media’}),
)

通过这样的映射,静态的资源的问题就解决了。:)

Django URL dispatcher

1. project 级别的 url 调用 app 级别的url

此处要注意的是,project url + app url 才是真正的url,所以写url的正则表达式时,注意^ $两个符号

2. 通过Url传递Get Request参数

如果我们 detail(request, name) 的方法需要一个name参数,那么我们的正则表达式应该这样写 (r’^detail/P<?name>w+$’, ‘detail’)

3. 快捷调用 view
在appproject.views中有个index方法 在patterns 中第一个参数指定view后,在以后的调用只需指定方法名即可
urlpatterns = patterns(‘appproject.views’,
(r’^$’, ‘index’),
)

No Comments » | Tags:, | Categories: Technology, 我的声音


我的豆瓣

二维码快速链接
QR Code fuer diese Seite