[django学习]快速笔记,Django碰到的问题总结

最近学习Django中,在看limodou的Django Step by Step,不过自己随便写写还是碰到了挺多问题,不过貌似都是比较常见,还能顺利解决。现在写下来,也许以后会忘记,也许能帮上碰到同样问题的


  1. 中文URL:这个其实是很常识的东西,但是之前做web一直没注意过,在使用HttpResponseRedirect的时候,如果Redirect的URL中带中文的话,会报UnicodeEncodeError错误。解决的办法是使用urlquote对URL进行编码
    from django.utils.http import urlquote

    #return的时候在URL前加上urlquote
    return HttpResponseRedirect(urlquote("/wiki/%s" % page.pagename)) 

    这个URL在ie的地址栏看到的就是一堆%的东西,Firefox等好像看到的是中文

  2. Django版本:Django Step by Step用的是Django0.9.x版本的,很多语法和结构和最新的1.0.x已经有所变化,这个变化挺多,网上已经有所总结
    将基于0.96的 Apps 迁移到 1.0.
  3. 模板对于HTML字符的转义:一般来说,你用于替换模板的对象或者字符串中的HTML字符都会被转义,如果不让它做转义呢?
    将原有的{{content}}写为{{content|safe}}
  4. 表格的奇偶css变化:一般表格的tr的class会做成交错的形式,那么在模板中可以使用语法
    <tr class="{% cycle row1,row2 %}">使得tr在for循环里来回的改变class
  5. 正则表达式:之前没怎么看,不过现在发现正则表达式实在是好东东,熟练的话可以少些很多代码,而且很多时候正则表达式可以做到原先做不到的事。

    这里讲个碰到的很简单的问题,比如一个博客的内容,它可能是很长的,那么在列表或者首页的时候就希望只截取前100个单词,但是又不希望它把一个单词给分开了.
    那么问题就变成:寻找一个字符串s中位置大于100的第一个空字符(空格,\t,\r\n),返回到这个空字符为止的前缀子串。
    代码
    import re
    = re.compile('\s')                #\s代表任何空字符

    match 
    = r.search(wiki.content,100)  #从wiki.content的100个字符后开始寻找匹配
    if match:                           #如果找到,match不是空
        index = match.start()           #得到找到匹配的开始位置
    else:                               #如果match是None,未找到
        index = len(wiki.content)       #index是就整个字符串长度

    wiki.content 
    = wiki.content[:index] + '...'  #将得到的子串加上... 

暂时就想到这些,看了点Django之后,现在发现之前用的java的web框架开发的时候实在是又笨重又难用。不过现在弄起javascript和css来倒是熟练不少。

 

posted @ 2009-12-29 02:18  City of Angels  阅读(2679)  评论(2编辑  收藏  举报