在處理Django中的請求期間,我需要對同一個應用程序執行嵌套的請求。考慮這個例子,在處理sendmail請求的同時,我嘗試向同一個服務器發出另一個請求以獲取附件的內容(郵件的主體和要附加其內容的url列表提供給sendmail視圖函數通過POST參數):以編程方式在Django中執行嵌套的GET請求
def sendmail(request):
mail = #... create a mail object
for url in urls: # iterate over desired attachments urls
data = urllib.urlopen('http://127.0.0.1:8000' + url).read()
mail.attach(data)
這種方法有幾個問題。首先,它不能與開發服務器一起工作,因爲它一次只能處理一個請求:由於它已經在處理sendmail請求,因此試圖從給定的URL中讀取將永遠阻塞。 其次,我必須指定服務器的IP和端口,這不是很好。
我願做這樣的事情,而不是:
data = django_get(url).read()
在假想django_get方法不會真正使一個HTTP請求,而是直接調用Django的組件,它接受一個URL,並返回一個HttpResponse。這將解決這兩個問題,因爲不會有任何實際的套接字連接,並且不需要在URL中包含服務器/端口。這怎麼可能實現?
正是我需要的,非常感謝。 – gpothier 2010-10-28 20:59:16