[PY]复杂情况(GAE)下Django的模板搜寻顺序自定义

嘛,作为下定决心学习新技术系列,正式开始折腾Django了,作为不放到网上跑会死星人放和不折腾会死星人,以及没钱买VPS穷鳖星人果断选择了在GAE上搭Django环境来玩,多亏python系和google系的众多Geek,让我有很多已有的open-source的project可以引用(后附清单)

因为引用的东西很多,所以目录管理成了很重要的一个问题,模板目录是一个比较复杂的问题,因为众多app中既有引用的app,可能需要用公用的模板去覆盖(比如openid登录),也有自己的实际项目的app,需要覆盖掉公用的模板,所以我在根目录建立了templates_override和templates_fallback来区分,然后如何设置对应的settings.py就成了问题

翻手册翻文档翻源码,需要自定义一个类来解决这个问题,下面是settings.py的片段

?View Code PYTHON
1
2
3
4
5
6
7
8
9
10
11
12
13
from django.template.loaders.filesystem import Loader as fsLoader
class settingsLoader(fsLoader):
    def __init__(self, dirs = None):
        self.dirs = dirs
    def load_template_source(self, template_name, template_dirs=None):
        if not template_dirs:
            template_dirs = self.dirs
        return super(settingsLoader, self).load_template_source(template_name, template_dirs)
TEMPLATE_LOADERS = (
    ('settings.settingsLoader', [os.path.join(os.path.dirname(__file__), 'templates_override')]),
    'django.template.loaders.app_directories.load_template_source',
    ('settings.settingsLoader', [os.path.join(os.path.dirname(__file__), 'templates_fallback')]),
)

目前来看Django还是比较顺手的,就是墙内部署GAE实在蛋疼……尤其是有这么多引用的app,文件数量很大……万幸GAE部署的时候不是一个个文件上传而是打包一炮上传的
 

附录:目前引用的project清单

Tags: , ,

星期六, 四月 30th, 2011 WebDev 没有评论

[PHP]微博用分割消息代码(避免分割URL等语素

给自己的推特机器人用的代码,避免分割URL、@、#,另外会在后面表明消息总条数和当前编号,另外由于多数客户端都是新的在前面,所以逆向输出以方便阅读

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public function tweet($msg) {
	$msg = trim($msg);
	if(($len = mb_strlen($msg))>130) {
		if($len > 1200) gx::throw_('tooooo long msg x_x');
 
		$nonbreak = '%((?:@[a-zA-Z0-9_\-]+)|(?:#[\S]+)|(?:https?://[\w\s\.]+(?:/\S*)?))%';
		$units = preg_split($nonbreak, $msg,-1, PREG_SPLIT_DELIM_CAPTURE);
		$msgs = array();
		$buffer = '';
		while($u=array_shift($units)) {
			if(mb_strlen($buffer)+mb_strlen($u) > 120) {
				if(preg_match($nonbreak, $u)) {//this unit is non-break!
					$msgs[] = $buffer;
					$buffer = $u;
					continue;
				}
				//break words
				$buffer .= $u;
				while(mb_strlen($buffer)>120) {
					$msgs[] = mb_substr($buffer,0,120);
					$buffer = mb_substr($buffer,120);
				}
			} else {//not too long yet, wait for next unit
				$buffer .= $u;
			}
		}
		$now = $all = count($msgs);
		$objs = array();
		while($m = array_pop($msgs)) {//output in reversed order
			$objs[] = $this->tweet($m."($now/$all)");
			$now--;
		}
		return $objs;
	}
	list($code, $response) = $this->request('1/statuses/update.json', 'POST', array(
	  'status' => $msg
	));
 
	if ($code == 200) {
	  return json_decode($response);
	} else {
	  gx::throw_(htmlentities($response), $code);
	}
}

Tags: , ,

星期六, 四月 23rd, 2011 WebDev 没有评论

[PHP]QueryPath中的编码问题

其实发现QueryPath这个神奇的类库已经是几年前的事情了,QueryPath是一个PHP的DOM操作类库,仿jQuery风格。最近终于有机会来实战一把,却遇到了万恶的编码问题,根据API文档用convert_to_encoding来控制编码却一直失败(源码是UTF-8的),拿起了传说中的霰弹枪一顿乱打之后,还是在PHP官网的手册评论里面找到了答案,嗯,来一段代码或许更清楚一些

1
2
3
4
5
		return htmlqp($html, null,
			array(
				//'convert_from_encoding'=>'UTF-8',
				'convert_to_encoding'=>'HTML-ENTITIES'
			))->find('.tml_item')->text();

Tags: ,

星期六, 四月 9th, 2011 WebDev, 技术 没有评论

本站荣获GFW认证

2月20号下午2点起,本站正式荣获GFW认证,表现为域名mcfog.com遭DNS污染,今日上午约10点钟开始,购买的独立IP地址也被封,tracert结果停在上海电信骨干路由处

所幸独立IP被封,共享的IP还没有被封,所以只好切换到共享的IP(13刀水漂了),然后绑hosts上
173囧201囧98囧178 mcfog.com

嘛,不知GFW这轮要疯到什么时候,还是一直这么下去了……可怜我的域名才续费了2年啊,特此问候方校长以及各个相关人士的女性家属一百遍

PS:记录一下不受污染的DNS查阅方法
nslookup -vc yourdomain.com 8.8.8.8

===========================================
后记:
Godaddy说:“GFW不疼你,爹疼你”,于是给了我一个新的独立IP地址173囧201囧98囧195~
好吧,共享一下经验:和我一样Godaddy虚拟主机+SSL证书的童鞋,可以在My Account里点Web Hosting,然后点域名出来的那个小窗里切域名到Share,然后去Rekey一下,然后站会一段时间不能访问,然后你就拥有了一个新的独立IP,但是这个IP只是帮你DNS修改好并且SSL正常可以HTTPS,在控制面板等处却看不见了,要自己保管好……嗯嗯

星期四, 二月 24th, 2011 无类别扯谈 没有评论

【原创】在线生成器 of 《魔法少女小圆》剧中的符文

我又蛋疼了……点击进入在线生成器

好吧,剧中的符文中还缺X等个别字母,不过本站的域名倒是够了

http://McFog.com

TTF格式字体来自此维基页
http://wiki.puella-magi.net/Deciphering_the_runes#Runic_Font

Tags: , ,

星期日, 一月 30th, 2011 分享 没有评论

[神曲]D City Rock (十月番之PSG)

不分享一下没法安心去睡觉……太给力了,PSG的神曲……歌词见炮姐弹幕,下载链接在下面

Mp3下载在这里

Tags:

星期日, 十二月 5th, 2010 分享 没有评论
Pages: << 1 2 3 4 5 6 7 8 ...19 20 21 >>

Page optimized by WP Minify WordPress Plugin