【发布时间】:2011-05-02 02:48:00
【问题描述】:
在 Django 中处理请求期间,我需要对同一个应用程序执行嵌套请求。考虑这个例子,在处理 sendmail 请求时,我尝试向同一服务器发出另一个请求以获取附件的内容(邮件的正文和要附加的内容的 url 列表提供给 sendmail 视图函数通过POST参数):
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 中包含服务器/端口。怎么可能实现?
【问题讨论】:
标签: django