中国开发网: 论坛: 程序员情感CBD: 贴子 239776
haitao
Windows平台下的运行环境配置(张骏)
经过了连续两天的跟踪,django终于在俺的机器上跑起来了。 走了不少弯路,想想还是把遇到的问题写下来吧,让大家能够节省点时间。

下载

apache 2.0.54: 点击下载

mod_python 3.1.4: 源码下载 没找到win32版本的,自己编译, 配置两个环境变量PYTHONSRC和APACHESRC, 用python对应的编译器(python2.4=vc71)编译即可,win32版本的mod_python 3.1.4可以到http://www.lehuen.com/nicolas/download/mod_python/下载

pyscopg1 1.1.18: 点击下载

posggresql 8.0: 点击选择合适的下载

Apache配置

httpd.conf:

# 修改DocumentRoot
DocumentRoot "d:/myproject/django/wwwpub" # 此处是你的web发布目录, 用于存放静态文件
# 修改下面对应DocumentRoot项的<Directory>标记
<Directory "d:/myproject/django/wwwpub">
.... # 省略
</Directory>

# 增加下面的标记,用于映射url http://localhost:8080/admin/下的访问
<Location /admin/>
SetHandler mod_python
PythonHandler django.core.handler
SetEnv DJANGO_SETTINGS_MODULE testproj.settings.admin
</Location>
细心的朋友会发现上面没有映射根(/), 因为俺也没有研究出来, 当按/admin/的方式映射根时, 根下所有的静态文件都不能访问了(必然的结果:(), 等adrian的教程3吧

Python配置

保证django在sys.path中能够找到

( 以下部分抄自原版教程, 只说关键部分吧 )

初始化项目

在wwwpub之外随便找一个目录,但要求能在sys.path中找到, 执行:

python xxxx\django\bin\django-admin.py startproject testproj
该命令会在当前执行目录下建立一个testproj目录,用于存放该项目的model,url映射,视图和模版.

执行后,进入testproj\apps, 执行:

python xxxx\django\bin\django-amdin.py startapp polls
该命令就建立了一个polls目录, 里面就可以放置testproj项目的polls应用的具体内容了.

编辑testproj\settings\main.py, 配置数据库参数

执行set DJANGO_SETTINGS_MODULE=testproj.settings.main, 注意不要加引号, 教程里加引号win下不正确

执行

python xxxx\django\bin\django-amdin.py init
来初始化数据库.

按教程说明编写polls.py文件. 并配置testproj.settings.main中的INSTALLED_APPS

执行

python xxxx\django\bin\django-amdin.py install polls
django会自动根据polls.py文件中的模型建表.

按照教程01中Playing with the API的内容操作. 此处体现了python的强大. 你只需要定义一个模型对象, 所有的操作自动给你构造好了. OK, 完成这一小节的操作后,数据库中就增加了几条记录了.

使用管理界面

拷贝 trunk下的media目录到wwwpub下, 启动apache server看看能不能访问/media/img/下的图片

按照教程02中Create a user account的内容创建一个用户.

使用 http://127.0.0.1:8080/admin/ 登录管理界面. 如果登录不报错, 但总是在登录界面循环, 需要在testproj.settings.admin中增加

REGISTRATION_COOKIE_DOMAIN = '127.0.0.1'
管理polls项目的对象

很简单,按照教程一步一步来就行了.

( 继续教程,我们来实现我们自己的应用 )

配置URL映射

在testproj.settings.urls.main 中的urlpatterns中加入一行:

#python
(r'^polls/', include('testproj.apps.polls.urls.polls')),
然后后在 testproj.apps.polls.urls.polls中加入一行:

#python
(r'^(?P<pid>\d+)$, 'polls.view_poll')),
注意此处只是指定的polls.view_poll,因为在这行只上有一个限定前缀

#python
urlpatterns = patterns('testproj.apps.polls.views',
配置template目录

在testproj.settings.main中增加:

#python
TEMPLATE_DIRS = (
r'D:\myproject\django\trunk\testproj\apps\polls\templates' ,
)
确定该目录的存在,尽量不要把模版文件放到wwwpub目录下

实现Views

来个最简单的吧

testproj.apps.polls.views.polls:

# coding: gb2312
from django.models.polls import polls
from django.core import template_loader
from django.core.extensions import DjangoContext as Context
from django.utils.httpwrappers import HttpResponse, HttpResponseRedirect

def view_poll( request , id ):
p = polls.get_object( id__exact = '1' )
t = template_loader.get_template('viewpoll')
c = Context(request, {'pollobj': p })
return HttpResponse(t.render(c))
实现模版viewpoll

在templates目录下建立文件viewpoll.html

<html>
<body>
<title>test</title>
{{ pollobj.question }}
</body>
</html>
最后一步,配置mod_python

# 增加下面的标记,用于映射url http://localhost:8080/polls/下的访问
<Location /polls/>
SetHandler mod_python
PythonHandler django.core.handler
SetEnv DJANGO_SETTINGS_MODULE testproj.settings.main
</Location>
启动apache,然后访问http://localhost:8080/polls/1看看有没有效果

OK,大功告成。现在你可以随意发挥了。美中不足的就是还不能把根映射为应用,当然在/index.htm里面直接重定向也可以。 另外使用polls/aaa.htm这种静态页面也没有办法,只能增加一个url映射然后用file读出来。

django还需要进化。

体会

URL mapping很有效。

model 的实现相当精美。特别是数据库直接建表。但是再使用一段时间后改表只能用 djangoamdin sql 命令将sql导出再人工处理了。不过作者已经做了足够多了。

另外middleware仅仅是功能的扩充。也算是server段的hack代码吧

其他,还没体会出来。。。

--
张骏 <zhangj at foreseen-info dot com>
(2005-07-19 04:14:04由jameschang编辑)
http://wiki.woodpecker.org.cn/moin/DjangoSetup
我的blog:http://szhaitao.blog.hexun.com & http://www.hoolee.com/user/haitao
--以上均为泛泛之谈--
不尽牛人滚滚来,无边硬伤纷纷现 人在江湖(出来的),哪能不挨刀(总归是要的)
网络对话,歧义纷生;你以为明白了对方的话,其实呢?

您所在的IP暂时不能使用低版本的QQ,请到:http://im.qq.com/下载安装最新版的QQ,感谢您对QQ的支持和使用

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录