Django碰到的問題總結

作者: City of Angels  來源: 博客園  發布時間: 2010-11-07 20:45  閱讀: 1125 次  推薦: 0   原文鏈接   [收藏]  
摘要:最近學習Django中,在看limodou的Django Step by Step,不過自己隨便寫寫還是碰到了挺多問題,不過貌似都是比較常見,還能順利解決。現在寫下來,也許以后會忘記,也許能幫上碰到同樣問題的

  最近學習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來倒是熟練不少。

0
0
 
標簽:Django
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()