如何使用 Django 框架将 return python 脚本响应作为 Http 响应

How to return python script response as Http response using Django framework

我正在使用 Python Django 框架,新的。

我在浏览器中收到 "None",不确定我的代码有什么问题。

from django.http import HttpResponse

def index(request):
 from amazon.api import AmazonAPI
 AMAZON_ACCESS_KEY = "cant share my key"
 AMAZON_SECRET_KEY = "cant share my key"
 AMAZON_ASSOC_TAG = "cant share my tag"
 REGION = "US"
 amazon = AmazonAPI(AMAZON_ACCESS_KEY, AMAZON_SECRET_KEY, AMAZON_ASSOC_TAG)

 products = amazon.search(BrowseNode='3760911', SearchIndex='Beauty', 
 MaximumPrice='30')

 for i, product in enumerate(products, 1):
    return HttpResponse(print(str(product)))

当我在 python shell 中 运行 时,该代码就像一个魅力,但在浏览器中 运行 却没有。

django 使用 MVT! 您需要创建一个项目,设置 URL 并将 HTTPResponse 放在视图中! 阅读本教程: https://simpleisbetterthancomplex.com/series/2017/09/04/a-complete-beginners-guide-to-django-part-1.html

for i, product in enumerate(products, 1):
    return HttpResponse(print(str(product)))

这里有两个问题:

  • 你不需要print。 HttpResponse 接受一个字符串并将其呈现给网络浏览器。
  • 您只能return一次。

我能想到的最简单的解决方案是:

resp = ''
for i, product in enumerate(products, 1):
    resp += str(product) + '<br>'
return HttpResponse(resp)
for i, product in enumerate(products, 1):
    return HttpResponse(print(str(product)))

首先,您可以将HttpResponse 放在循环中。最好的解决方案是先生成您的响应字符串,然后 return 该字符串。另外,删除打印。

for i, product in enumerate(products, 1):
     response_string += product
return HttpResponse(response_string)