Time of Update: 2016-06-10
為了自訂一個模板標籤,你需要告訴Django當遇到你的標籤時怎樣進行這個過程。當Django編譯一個模板時,它將原始模板分成一個個 節點 。每個節點都是 django.template.Node 的一個執行個體,並且具備 render() 方法。 於是,一個已編譯的模板就是 節點 對象的一個列表。 例如,看看這個模板:Hello, {{ person.name }}.{% ifequal name.birthday today %} Happy birthday!{% else %} Be
Time of Update: 2016-06-10
抽取出我們代碼中共性的東西是一個很好的編程習慣。 比如,像以下的兩個Python函數:def say_hello(person_name): print 'Hello, %s' % person_namedef say_goodbye(person_name): print 'Goodbye, %s' % person_name我們可以把問候語提取出來變成一個參數:def greet(person_name, greeting): print '%s, %s' % (greeting,
Time of Update: 2016-06-10
編寫模板節點編寫自訂標籤的第二步就是定義一個擁有 render() 方法的 Node 子類。 繼續前面的例子,我們需要定義 CurrentTimeNode :import datetimeclass CurrentTimeNode(template.Node): def __init__(self, format_string): self.format_string = str(format_string) def render(self, context): now =
Time of Update: 2016-06-10
在語句Book.objects.all()中,objects是一個特殊的屬性,需要通過它查詢資料庫。 在第5章,我們只是簡要地說這是模組的manager 。現在是時候深入瞭解managers是什麼和如何使用了。總之,模組manager是一個對象,Django模組通過它進行資料庫查詢。 每個Django模組至少有一個manager,你可以建立自訂manager以定製資料庫訪問。下面是你建立自訂manager的兩個原因:
Time of Update: 2016-06-10
有時候你會發現Django資料庫API帶給你的也只有這麼多,那你可以為你的資料庫寫一些自訂SQL查詢。 你可以通過匯入django.db.connection對像來輕鬆實現,它代表當前資料庫連接。 要使用它,需要通過connection.cursor()得到一個遊標對像。 然後,使用cursor.execute(sql, [params])來執行SQL語句,使用cursor.fetchone()或者cursor.fetchall()來返回記錄集。 例如:>>> from django.db
Time of Update: 2016-06-10
使用通用視圖的方法是在URLconf檔案中建立配置字典,然後把這些字典作為URLconf元組的第三個成員。例如,下面是一個呈現靜態“關於”頁面的URLconf:from django.conf.urls.defaults import *from django.views.generic.simple import direct_to_templateurlpatterns = patterns('', (r'^about/$', direct_to_template, {
Time of Update: 2016-06-10
先設定一個關於書本(book)的資料模型:from django.db import modelsclass Publisher(models.Model): name = models.CharField(max_length=30) address = models.CharField(max_length=50) city = models.CharField(max_length=60) state_province = models.CharField(max_length=3
Time of Update: 2016-06-10
你應該在生產環境中把TEMPLATE_DEBUGFalse 如果這個設為`` True`` ,為了在那個好看的錯誤頁面上顯示足夠的東西,Django的模版系統就會為每一個模版儲存一些額外的資訊。實現一個404模板如果`` DEBUG`` 設定為`` True`` ,Django會顯示那個內建的404錯誤頁面。 但如果`` DEBUG`` 被設定成`` False`` ,那它的行為就不一樣了: 他會顯示一個在你的模版根目錄中名字叫`` 404.html`` 的模版
Time of Update: 2016-06-10
便攜文檔格式 (PDF) 是由 Adobe 開發的格式,主要用於呈現可列印的文檔,其中包含有 pixel-perfect 格式,嵌入字型以及2D向量映像。 You can think of a PDF document as the digital equivalent of a printed document; indeed, PDFs are often used in distributing documents for the purpose of printing
Time of Update: 2016-06-10
Django帶來了一個進階的彙總產生架構,它使得建立RSS和Atom feeds變得非常容易。什麼是RSS? 什麼是Atom?RSS和Atom都是基於XML的格式,你可以用它來提供有關你網站內容的自動更新的feed。 瞭解更多關於RSS的可以訪問 http://www.whatisrss.com/, 更多Atom的資訊可以訪問 http://www.atomenabled.org/.想建立一個聯合供稿的源(syndication feed),所需要做的只是寫一個簡短的python類。
Time of Update: 2016-06-10
為了配置基於 mod_python 的 Django,首先要安裝有可用的 mod_python 模組的 Apache。 這通常意味著應該有一個 LoadModule 指令在 Apache 設定檔中。 它看起來就像是這樣:LoadModule python_module /usr/lib/apache2/modules/mod_python.soThen, edit your Apache configuration file and add a directive that ties a
Time of Update: 2016-06-10
SessionMiddleware 啟用後,每個傳給視圖(view)函數的第一個參數``HttpRequest`` 對象都有一個 session 屬性,這是一個字典型的對象。 你可以象用普通字典一樣來用它。 例如,在視圖(view)中你可以這樣用:# Set a session value:request.session["fav_color"] = "blue"# Get a session value -- this could be called in a different view,#
Time of Update: 2016-06-10
從內部來看,每個session都只是一個普通的Django model(在 django.contrib.sessions.models 中定義)。每個session都由一個隨機的32位元組雜湊串來標識,並儲存於cookie中。 因為它是一個標準的模型,所以你可以使用Django資料庫API來存取session。>>> from django.contrib.sessions.models import Session>>> s =
Time of Update: 2016-06-10
許多共用主機的服務提供者不允許運行你自己的服務進程,也不允許修改 httpd.conf 檔案。 儘管如此,仍然有可能通過Web伺服器產生的子進程來運行Django。記錄如果你要使用伺服器的子進程,你沒有必要自己去啟動FastCGI伺服器。 Apache會自動產生一些子進程,產生的數量按照需求和配置會有所不同。在你的Web根目錄下,將下面的內容增加到 .htaccess 檔案中:AddHandler fastcgi-script .fcgiRewriteEngine OnRewriteCond %
Time of Update: 2016-06-10
Django 提供內建的視圖(view)函數用於處理登入和退出 (以及其他奇技淫巧),但在開始前,我們來看看如何手工登入和退出。 Django提供兩個函數來執行django.contrib.auth\中的動作 : authenticate()和login()。認證給出的使用者名稱和密碼,使用 authenticate() 函數。它接受兩個參數,使用者名稱 username 和 密碼 password ,並在密碼對給出的使用者名稱合法的情況下返回一個 User 對象。
Time of Update: 2016-06-10
有些時候,對整個經解析的頁面進行緩衝並不會給你帶來太多好處,事實上可能會過猶不及。比如說,也許你的網站所包含的一個視圖依賴幾個費時的查詢,每隔一段時間結果就會發生變化。 在這種情況下,使用網站級緩衝或者視圖級緩衝策略所提供的整頁緩衝並不是最理想的,因為你可能不會想對整個結果進行緩衝(因為一些資料經常變化),但你仍然會想對很少變化的部分進行緩衝。針對這樣的情況,Django提供了簡單低級的緩衝API。 你可以通過這個API,以任何你需要的粒度來緩衝對象。 你可以對所有能夠安全進行 pickle
Time of Update: 2016-06-10
限制訪問可以基於某種許可權,某些檢查或者為login視圖提供不同的位置,這些實現方式大致相同。一般的方法是直接在視圖的 request.user 上運行檢查。 例如,下面視圖確認使用者登入並是否有 polls.can_vote許可權:def vote(request): if request.user.is_authenticated() and request.user.has_perm('polls.can_vote')): # vote here else: return
Time of Update: 2016-06-10
Vary 頭部定義了緩衝機制在構建其緩衝索引值時應當將哪個要求標頭標考慮在內。 例如,如果網頁的內容取決於使用者的語言偏好,該頁面被稱為根據語言而不同。預設情況下,Django 的緩衝系統使用所請求的路徑(比如:"/stories/2005/jun/23/bank_robbed/" )來建立其緩衝鍵。這意味著每次請求都會使用同樣的緩衝版本,不考慮才用戶端cookie和語言配置的不同。 除非你使用Vary頭部通知緩衝機制頁面輸出要依據要求標頭裡的cookie,語言等的設定而不同。要在
Time of Update: 2016-06-10
本文執行個體講述了Python擷取央視節目單的方法。分享給大家供大家參考。具體如下:#! /usr/bin/python # -*- coding: utf-8 -*- import urllib,re,unicodedata,string,sys from time import strftime,localtime channel={"1":"CCTV-1","2":"CCTV-2","3":"CCTV-3","4":"CCTV-4亞洲",
Time of Update: 2016-06-10
關於緩衝剩下的問題是資料的隱私性以及在級聯緩衝中資料應該在何處儲存的問題。通常使用者將會面對兩種緩衝: 他或她自己的瀏覽器緩衝(私人緩衝)以及他或她的提供者緩衝(公用緩衝)。 公用緩衝由多個使用者使用,而受其他某人的控制。 這就產生了你不想遇到的敏感性資料的問題,比如說你的銀行帳號被儲存在公眾緩衝中。 因此,Web 應用程式需要以某種方式告訴緩衝那些資料是私人的,哪些是公用的。解決方案是標示出某個頁面緩衝應當是私人的。 要在 Django 中完成此項工作,可使用 cache_control