ant21 on Aug 22nd, 2009用 Ajax 方式实现 Django Comments 提交
Django 自带的 Comments 模块还蛮好用的,但是提交的时候貌似有点麻烦,虽然可以手动去掉那个预览的按钮,只留下提交按钮,但还是想用户体验更好一些,用 Ajax 的方式来改进评论的提交。
想要的效果很简单,用户写完评论,点击提交按钮,这时候出现 loading 图标,显示正在提交,提交成功后,用 YFT 的方式把刚才的评论加到评论列表最后,同时评论数加一,loading 图标消失。当然,需要用到我最喜欢的 jQuery 和她的伙伴 Effect.Highlight。
在我的页面中,需要对每一个产品作评论,于是在 product_detail.html 的头部,加上如下代码:
123456789101112131415161718192021222324252627282930313233343536373839404142434445<script type="text/javascript" charset="utf-8">
function bindComment() {
$(’#comments form’).submit(function() {
$(’input[type=submit]‘).attr(’disabled’, ‘disabled’);
$.ajax({
type: "POST",
[...]
ant21 on May 28th, 2009easy_install uninstall
Sphinx 0.6.1 没有 0.5.1 好用,而且用来编译 Django 文档时会出错。用 easy_install 安装的,调用的时候总是默认选择了最新版,没找到切换版本的方法,还是把 0.6.1 卸载了吧。运行命令:
1easy_install -m PackageName
两遍以后,再调用 Sphinx 就会切换到 0.5.1 版本了。
ant21 on Apr 4th, 2008Django Python MySQLdb etc on DreamHost
虽然 Dreamhost 官方不支持 Django,但想在 DH 上跑 Django 也不是件困难的事情。基本上,只要照着 Jeff 大哥的指南走就可以了,同时也要参考下 DH 的 wiki,但在开始之前,说说我的经验。
Dreamhost 的 Python 版本为 2.3 和 2.4 的。如果你不想用 2.5 版本的 Python,但要用一些安装到 site-package 的库,那么需要先安装 virtualenv 虚拟环境:
1python virtualenv.py ENV
ENV 为你要安装到的目录,比如 local 或者其它,然后它会在 ENV 中建立 bin 和 lib 目录,自动安装 easy_install 并设置环境变量,这样以后你就可以在自己的小环境中玩了,不受限制。
如果想要用 2.5 的 Python,就需要自己下载源代码编译:
123./configure –prefix=$HOME –enable-unicode=ucs4
make
make install
–prefix 设置为欲安装到的目录。
然后编辑 ~/.bash_profile,把 Python 的安装目录设置到环境变量中。记得在 py 文件中也要把
1#!/usr/bin python
改为
1#!/home/your_name/python_install_directory/bin python
特别是配合 django [...]
ant21 on Dec 28th, 2007制作 Django 开发文档的 PDF 文件
我们可爱的 henning 同学创造了一个很 cool 的 snippet 用来把 django 的 doc 文档联接起来生成一个漂亮的 pdf 文档。我来借花献佛,说说它的用法。
运行这个脚本之前,你需要 htmldoc,rst2html,Python Imaging Libraray,BeautifulSoup 和 spoon。htmldoc 和 rst2html 可以 apt-get 来安装,PIL 的安装可以看这一篇,BeautifulSoup 和 spoon 都只有一个文件,下载就行。
1sudo apt-get install python-docutils htmldoc
然后把 make_pdf_from_django_doc.py 和 BeautifulSoup,spoon 一起放到你的 django/docs 目录下,运行之,一会儿就能看到漂亮的 Django 文档了。
ant21 on Nov 25th, 2007Django 如何处理一个请求
本文翻译自 James Bennett 的 How Django processes a request,对于学习 Django 的朋友,我想能有所助益。翻译有不妥当的地方,请留言告诉我。
以下是译文。
在 Jonathan Snook 昨天的评论中,他提出了一个很棒的挑战:说说 Django 是如何处理一个 request 的,从开始到结束,对于内部调用的各种东西要有足够的细节,并且要链接到恰当的文档。
Simon Willison 曾经写过这样的文档,但它是从一个很高层的角度而且从那以来很多东西都有变化,因此我决定自己写一篇,希望它易于理解。
注意:这是第一份草稿,不是完成的产品,也不是完整的列表。随着工作的进行,它会经常改变。理想情况下,我会得到一些帮助来产生一个某种程度上的可视化的文档,但现在我坚持用纯文本。
有 官方文档的条目,我会为它做链接,没有的,我会链接到 Django 仓库中相关代码的位置──这些位置经常改变,特别是因为我总是链接到各自文件的行号,但我会尽力保持它们是最新的。如果你看到错误的地方,或者我遗漏的东 西,或者应该解释的更好的地方,请留言让我知道。
更新 2006.10.2:我刚刚回顾了这篇文章并作了一些修改。更新了好几个代码引用;重写了一些最近发生的关于内部处理的含糊不清的地方。
更新 2006.11.28:增加了关于数据库何时关闭的注释。
更新 2006.12.20:链接到 Django wiki 上关于调度者的注释。
我们开始吧。
Request 来了!
首先发生的是一些和 Django 有关的其他事情,分别是:
如果是 Apache/mod_python 提供服务,request 由 mod_python 创建的 django.core.handlers.modpython.ModPythonHandler 实例传递给 Django。
如果是其他服务器,则必须兼容 WSGI,这样,服务器将创建一个 django.core.handlers.wsgi.WsgiHandler 实例。
这两个类都继承自 django.core.handlers.base.BaseHandler,它包含对任何类型的 request 来说都需要的公共代码。
有一个处理器了
当上面其中一个处理器实例化后,紧接着发生了一系列的事情:
这个处理器导入你的 Django 配置文件。
这个处理器导入 Django 的自定义例外类。
这个处理器呼叫它自己的 load_middleware 方法,加载所有列在 MIDDLEWARE_CLASSES 中的 [...]