pip 升级 pip 失败

今天在使用 python pip 安装一个 python 包的时候,一直提示:

# pip install --upgrade pip
Requirement already up-to-date: pip in /usr/local/lib/python2.7/dist-packages
You are using pip version 8.1.1, however version 8.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

尝试按说明执行 pip …

more ...

Django Admin 使用 filter_horizontal 不生效

Django 1.2.7 admin在使用ManyToManyField的时候,默认使用垂直filter_vertical方式进行显示与选择。此方式在选项比较多的时候,难以直观的看出哪些选项被选中,在尝试使用filter_horizontal进行显示的时候,我们碰到了一些问题。

more ...

pelican增加自定义jinja template filters

pelican官方文档没有显式的指明应该如何自定义jinja template filters.

在制作标签云的时候,不想写复杂的javascript,更不想又import一份javascript进来,所以决定自己搞一个比较简单的标签云

pelican默认的tag排序比较简单,为了能有比较“云”的感觉,决定对tag加个随机排序

查了Jinja的文档,没有随机排序的filter。由于我使用了virtualenv,所以最简单粗暴的解决方案是直接修改了Jinja的源码,添加了随机排序的功能

不过对于稍微有些“洁癖”的好,这样改后,心理上非常难受,决定到pelican社区,看看是否有幸添加个patch

当然,更幸运的是在github找到了此commit:

https://github.com/getpelican/pelican/pull/96

原来有个JINJA_FILTERS的设置,那一切就好办了, 增加自定义模块jinja_filters.py

import random

def shuffle( value ):
    """ Jinja template …
more ...

Django multiple select option with title

from django import forms
from django.utils.encoding import force_unicode
from django.utils.html import escape, conditional_escape

class SelectMultipleWithTitle(forms.SelectMultiple):
    """ multiple select optihon with title """
    def render_option(self, selected_choices, option_value, option_label):
        option_value = force_unicode(option_value)
        selected_html = (option_value in selected_choices) and u' selected="selected"' or ''
        return u'<option value="%s"%s …
more ...