Archive for the ‘Python’ Category

 

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 3rd, 2009diggfoto hack

diggfoto 上的图片还蛮不错的,但是要一张一张去点确实有点不人道(总在期望下一张更精彩?),下面的程序可以帮忙把它的图片都下回来,事先最好准备一个 diggfoto 文件夹,嘿嘿。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263#! /usr/bin/env python
#coding=utf-8

import os
import sys
import urllib
import urllib2
from BeautifulSoup import BeautifulSoup

def download(url=’http://diggfoto.com/’):    
    try:
        r = urllib2.urlopen(url)
        page = r.read()
       
        soup = BeautifulSoup(page)
        entry = soup.find(’div’, ‘entry’)
        a = entry.find(’a')
      [...]

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 Dec 5th, 2007安装 Python Imaging Library(PIL)

下载 Imaging-1.1.6 解压并进入目录后,运行
1python setup.py build_ext -i
会有类似这样的输出
123456789101112——————————————————————–
PIL 1.1.6 BUILD SUMMARY
——————————————————————–
version       1.1.6
platform      linux2 2.4.3 (#2, Oct  6 2006, 07:52:30)
[GCC 4.0.3 (Ubuntu 4.0.3-1ubuntu5)]
——————————————————————–
*** TKINTER support not available
— JPEG support ok
— ZLIB (PNG/ZIP) support ok
— FREETYPE2 support ok
——————————————————————–
不过很有可能,显示 JPEG 和 FREETYPE2 不被支持,这是由于缺少必要的开发库导致,根据它的建议,我们安装下面这些库。

支持 JPEG 的:libjpeg62,libjpeg62-dev
支持 FREETYPE1 的:libttf2,libttf-dev
支持 FREETYPE2 的:libfreetype6,libfreetype6-dev

1sudo apt-get install libjpeg62 libjpeg62-dev libttf2 libttf-dev [...]

ant21 on Nov 28th, 2007安装 MySQLdb — Python 的 MySQL 驱动

如果你的 Django 搭配 MySQL 使用,根据 Django 的说明,你需要 MySQLdb 驱动。安装之前,需要装 libmysqlclient15-dev 和 python2.4-dev,否则无法 build。根据你的版本不同而有所不同。
12sudo apt-get install libmysqlclient15-dev
sudo apt-get install python2.4-dev
修改 site.cfg 文件,指定 mysql_config 安装位置
1mysql_config = /usr/bin/mysql_config
然后 build
1python setup.py build
如果不出错的话
1sudo python setup.py install
就完成了。

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 中的 [...]

ant21 on Sep 3rd, 2007转换 BlogBus 到 WordPress 的 Python 脚本

周末没干别的,净搬家了。把 blogbus 和 blogsome 的博全都搬过来了,还是自己的地方用着放心哪。
blogbus 还算不错的,提供 xml 的导出功能,可惜是专有格式。网上似乎只有冰古的一个 php 的转换脚本。我自己对 php 一窍不通,而且这个脚本不能导入评论,还需要在服务端运行,我感觉不是很方便。正好最近和 Python 热恋中,于是动手写了一个转换脚本。
这个脚本目前仅支持 Python2,它读取 blogbus 导出的 xml 文件,然后为你生成 WordPress 专用的 Extended RSS 格式文件。评论,分类也包含其中,你不用担心用户的评论在转换中会丢失。提醒一下:记得导入时选择 WordPress 或者 WordPress Extended RSS(老版 WP),不要选择 RSS,否则小心评论导不进去哦。
更新(2007.10.31):一些网友发来邮件说转换有问题,我发现是由于 blogbus 的导出 xml 文件有些细微的变化。原来的 SchemaVersion 是 1.0-b,现在到了 1.1,因此我也把程序改了一下,目前 blogbus 的两种导出文件都能转换了。
更新(2008.10.08):一些 bug 修复。更友好的错误提示,我想用户应该可以根据提示自己修复 blogbus 的导出文件了。
更新(2009.01.01):增加输出 <wp:comment_date_gmt> 标签,内容同 comment_date。有网友说 WP 2.7 版本没有这个标签无法导入评论,奇怪。增加选项 -o,便于调整输出条目的顺序。
更新(2010.01.19):支持 WordPress 2.9 [...]