gpt4 book ai didi

python - Tornado 重定向到带参数的页面

转载 作者:太空狗 更新时间:2023-10-29 21:43:02 24 4
gpt4 key购买 nike

我正在使用 self.render 来呈现一个 html 模板,它依赖于在 def post() 方法中通过 ajax 从客户端接收到的信息,例如这个:

class aHandler(BaseHandler):
@tornado.web.authenticated
def post(self):
taskComp = json.loads(self.request.body)
if taskComp['type'] == 'edit':
if taskComp['taskType'] == 'task':
self.render(
"tasks.html",
user=self.current_user,
timestamp='',
projects='',
type='',
taskCount='',
resName='')

但是,这不会将用户重定向到 html 页面“tasks.html”。

但是我在我的控制台中看到一个状态:

[I 141215 16:00:55 web:1811] 200 GET /tasks (127.0.0.1)

其中 '/tasks' 是 tasks.html 的别名

为什么不重定向?

或者如何使用从 ajax 接收的数据连同上述 self.render 请求中提供的所有参数一起重定向到 tasks.html 页面?

最佳答案

“呈现”从不将访问者的浏览器重定向到不同的 URL。它向浏览器显示您呈现的页面的内容,在本例中为“tasks.html”模板。

重定向浏览器:

@tornado.web.authenticated
def post(self):
self.redirect('/tasks')
return

更多信息请参见 the redirect documentation .

要使用 AJAX 响应重定向,请尝试将目标位置从 Python 发送到 Javascript:

class aHandler(BaseHandler):
@tornado.web.authenticated
def post(self):
self.write(json.dumps(dict(
location='/tasks',
user=self.current_user,
timestamp='',
projects='',
type='',
taskCount='',
resName='')))

然后在 Javascript 中的 AJAX 响应处理程序中:

$.ajax({
url: "url",
}).done(function(data) {
var url = data.location + '?user=' + data.user + '&timestamp=' + data.timestamp; // etc.
window.location.replace("http://stackoverflow.com");
});

有关 URL 编码的更多信息,请访问 this answer .

关于python - Tornado 重定向到带参数的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27488095/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com