【发布时间】:2012-07-30 18:52:57
【问题描述】:
在用户提交一些数据以创建一个新对象后,我希望后端像往常一样将他重定向到对象详细信息:
我正在做类似的事情:
if obj.is_valid():
obj.save()
flash('%s created' % obj, )
return redirect(url_for('provider', provider_id=obj.id))
但是通过 curl 发出请求(我正在构建一个 API,用 curl 测试它)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>Redirecting...</title>
<h1>Redirecting...</h1>
<p>You should be redirected automatically to target URL: <a href="/provider/11">/provider/11</a>. If not click the link.
user@box
这很不幸,因为我只想要/provider/:id 的响应而不是中间步骤。
解决这个问题的正确方法是什么?
【问题讨论】:
-
如果您不希望服务器发送重定向页面,则根本不想使用重定向。而是直接调用呈现
/provider/11页面的方法。请注意,如果您这样做,浏览器 URL 将显示他们最初点击的任何地址(不是/provider/11),刷新页面将再次点击它。 -
不,我想要一个重定向,而不是直接调用该方法... Django 的重定向正确地完成了这件事...
-
@tutaca “正确地”对不同的人有不同的含义。您是指 HTTP 302 (en.wikipedia.org/wiki/HTTP_302) 吗?当您使用上面的代码时,这就是 Flask 应该已经设置的内容。您没有向我们提供响应页面随附的 HTTP 标头...
-
Man...事情正在做一个香草重定向(只需阅读代码),这是烧瓶默认的302(文档是这样说的)...正确的意思是当我没有生成html时不要要求它...