python - 在Django的http请求中多次重定向到一个具有不同参数的站点
问题描述
如何使用 HTTP 正文中的不同参数处理多个重定向到一个站点?在我的代码中,我有一个带有 HTTP 重定向的循环......它应该循环并使用不同的参数进行多次重定向,因为我有不同的参数。但它只是进行一次性重定向并转到这个网站,所以我最终只得到一个重定向而不是多个重定向。我真的对简单的顺序重定向很感兴趣,没有什么比并行多线程更难的了。我在视图中的代码如下所示:
for code in codes:
print(code)
base_url = 'https://base_url/'
code_part = 'code={}'.format(code)
url = '{}?{}'.format(base_url, code_part)
return redirect(url)
我考虑过将它封装到父子函数中,随着列表结构的变化,它会多次处理自己,但我认为我最终会得到与正常 for 循环相同的结果。另外,我看到了重定向应用程序,但我不确定它是否有助于我完成这项确切的任务。我如何实现它并不重要,但只要我调用重定向,程序就会退出到外部网站并且功能停止。
更新 我被要求提供更多代码,因此有助于回答我的问题。但这就是问题,我的视图函数中只有相关的代码,我将其包含在问题中,而我此时正在考虑如何解决这个问题,所以我目前没有任何其他代码。不幸的是:(任何朝着正确方向的推动都会非常有帮助。谢谢!
更新 不幸的是,Django 的重定向应用程序不适合对具有不同参数的一个站点进行许多查询。它假设处理 404 错误,并在其表中创建移动的永久链接......
解决方案
我在您的代码中看到的唯一问题是缩进。我只是重写了你的代码,所以它更简单一些。redirect()
也许问题出在您在循环结束时返回的调用方法中。
for code in codes:
print(code)
return redirect(f'https://base_url/?{code}')
而且当你返回一些东西时,你实际上退出了整个函数。这意味着无论你的 for 循环属于哪个函数,实际上都会停止,并且 for 循环永远不会比第一次迭代更进一步。
因此,如果您想要每个代码的结果,那么您应该改为这样编写:
results = []
for code in codes:
print(code)
results.append(redirect(f'https://base_url/?{code}'))
return results
推荐阅读
- angular - 将表单数据字段存储到本地存储不起作用
- arrays - 使用数组构造函数优化部分代码
- r - R制作数据集
- javascript - Vue.js 动态href
- java - Android - 关闭后不保存意图打开 PDF 文档
- python - 从 spacy 对象中删除命名实体
- node.js - 如何将 npm install 与 docker 一起使用?在不安装 npm 的情况下安装 node_modules
- sql-server - 合并 2 个递归 CTE 语句
- c++ - 通过指向指针数组的指针访问子类的属性
- flutter - 如何在 Flutter 中从 AndroidManifest.xml/AppDelegate 获取 Google Maps API KEY