Django一些實用經(jīng)驗

1.關(guān)于templates與static的目錄設(shè)置

最佳實踐為在app中單獨設(shè)置templates和static目錄强缘,不要在項目的根目錄下設(shè)置片习。例如延届,templates的設(shè)置為:

<appname>
----templates
    ----<appname>
        ----xxxx.html

static設(shè)置為:

<appname>
----static
    ----<appname>
        ----css
          ----xxxx.css
        ----images
          ----xxxx.jpg

另外址貌,不需要在項目的settings.py中再額外設(shè)置templates或static的路徑脚翘。

2.關(guān)于Admin界面的數(shù)據(jù)表顯示設(shè)置

list_displya表示在數(shù)據(jù)表頁面展示的列名
示例:

class PageAdmin(admin.ModelAdmin):
    list_display = ('title', 'category', 'url')

admin.site.register(Page, PageAdmin)

repopulated_fields表示一個列的數(shù)據(jù)隨另一個列的數(shù)據(jù)而生成
示例:

class CategoryAdmin(admin.ModelAdmin):
    list_display = ('name', 'views', 'likes')
    prepopulated_fields = {'slug': ('name',)} # 數(shù)據(jù)表中slug字段的值隨著name的值而生成骂因。

admin.site.register(Category, CategoryAdmin)

verbose_name_plural設(shè)置部分單詞的復數(shù)形式炎咖。Admin界面默認英語單詞的復數(shù)形式為在詞末直接加‘s’,但這對部分單詞來講是錯誤的,比如‘category’的復數(shù)為'categories',不是'categorys'。解決此問題的辦法是在category的model設(shè)置中添加如下代碼:

class Category(models.Model):
    ...

    class Meta:  
        verbose_name_plural = 'categories'

3.關(guān)于request

1)request.user.is_authenticated()
用法:用于在app的views.py中判斷用戶是否已授權(quán)(登錄)乘盼,返回值為True(表示已登錄),False(表示未登錄)
此外升熊,在templates(模板)文件中,可以使用request.user.is_authenticated結(jié)合if模板標簽判斷用戶是否已登錄(注意最好不要去掉request)绸栅,以及后續(xù)的不同響應(yīng)级野。
2)使用request判斷訪問IP地址
一般使用request.META['REMOTE_ADDR']獲取用戶的訪問IP地址,但是但是有些網(wǎng)站服務(wù)器會使用ngix等代理http粹胯,或者是該網(wǎng)站做了負載均衡蓖柔,導致使用remote_addr抓取到的是1270.0.1,這時使用HTTP_X_FORWARDED_FOR才獲得是用戶的真實IP风纠。推薦使用以下代碼况鸣,即可涵蓋以上兩種情況:

if request.META.has_key('HTTP_X_FORWARDED_FOR'):  
    ip =  request.META['HTTP_X_FORWARDED_FOR']  
else:  
    ip = request.META['REMOTE_ADDR']

4.關(guān)于時區(qū)

最簡單的做法是設(shè)置settings中的USE_TZ=False,即可解決大部分的時區(qū)不一致問題竹观。

5.結(jié)合javascript實現(xiàn)頁面跳轉(zhuǎn)

有時候用戶會訪問到不存在任何內(nèi)容的頁面镐捧,這時顯示頁面不存在(需要自己設(shè)置),希望隔一定的時間后栈幸,頁面自動跳轉(zhuǎn)到其他頁面愤估,可以利用javascript的setTimeout函數(shù)實現(xiàn),代碼如下:

<script>
    function go() {//定義函數(shù)
        window.location = "{% url 'index' %}";//頁面跳轉(zhuǎn)
    }
    window.setTimeout("go()", 1500);//1.5秒后執(zhí)行函數(shù)go
</script>

6.Log相關(guān)設(shè)置

1)Log Level
指定log的輸出級別速址,從高到低分別為CRITICAL, ERROR, WARNING, INFO, DEBUG(字母大寫玩焰,親測小寫字母不可行)。若Log Level為DEBUG芍锚,則所有信息都會輸出昔园,若Log Level為ERROR,則只有ERROR級別及以上的CRITICAL級別信息會輸出并炮。
Log Level既可以在項目的setting.py文件中設(shè)置默刚,如LOG_LEVEL = 'INFO',也可以在命令行執(zhí)行爬蟲命令的時候設(shè)置逃魄,如scrapy crawl <spider name> --loglevel INFO荤西。
2)Log File
指定log信息的輸出文件,一般在項目的setting.py文件中設(shè)置伍俘。如不設(shè)置邪锌,則在終端輸出log信息(并不絕對,如在crontab中設(shè)置scrapy的定時任務(wù)時癌瘾,log信息并不在終端輸出觅丰,就算重定向>到終端,仍然不輸出)妨退;如設(shè)置妇萄,則在指定的文件中輸出log信息蜕企。

7.輕松實現(xiàn)“閱讀更多”功能

經(jīng)常在制作博客網(wǎng)站時,主界面列出的文章一般要附帶一些文章開頭的文字內(nèi)容冠句,實現(xiàn)起來其實很輕松轻掩,只需要用到模板標簽truncatewords_html即可。例如:
{{ post.content|truncatewords_html:20}}表示顯示文章內(nèi)容的前20個單詞懦底。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末放典,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子基茵,更是在濱河造成了極大的恐慌,老刑警劉巖壳影,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拱层,死亡現(xiàn)場離奇詭異,居然都是意外死亡宴咧,警方通過查閱死者的電腦和手機根灯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掺栅,“玉大人烙肺,你說我怎么就攤上這事⊙跷裕” “怎么了桃笙?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵勇婴,是天一觀的道長乙濒。 經(jīng)常有香客問我,道長郭膛,這世上最難降的妖魔是什么闪檬? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任星著,我火速辦了婚禮,結(jié)果婚禮上粗悯,老公的妹妹穿的比我還像新娘虚循。我一直安慰自己,他們只是感情好样傍,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布横缔。 她就那樣靜靜地躺著,像睡著了一般铭乾。 火紅的嫁衣襯著肌膚如雪剪廉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天炕檩,我揣著相機與錄音斗蒋,去河邊找鬼捌斧。 笑死,一個胖子當著我的面吹牛泉沾,可吹牛的內(nèi)容都是我干的捞蚂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼跷究,長吁一口氣:“原來是場噩夢啊……” “哼姓迅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起俊马,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤丁存,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后柴我,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體解寝,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年艘儒,在試婚紗的時候發(fā)現(xiàn)自己被綠了聋伦。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡界睁,死狀恐怖觉增,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情翻斟,我是刑警寧澤逾礁,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站访惜,受9級特大地震影響敞斋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜疾牲,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一植捎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧阳柔,春花似錦焰枢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至霍转,卻和暖如春荐绝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背避消。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工低滩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留召夹,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓恕沫,卻偏偏與公主長得像监憎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子婶溯,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容