【问题标题】:Django: multiple user using the same View and templateDjango:多个用户使用相同的视图和模板
【发布时间】:2015-11-19 17:11:10
【问题描述】:

我有一个发送 XML 请求的视图,以获取响应并在模板中呈现响应。但是现在我遇到了一个问题,当两个用户向不同的 Web 服务发出请求时,模板中的数据显示了最后一个请求的数据。

当多个用户向不同的Web服务或同一个Web服务发出请求时,我不知道如何处理。

我想为每个用户动态生成一个模板,但我不知道如何处理 url。

我的看法:

def LeerXMLResponseView(request):
    archivo_request = request.GET.get('xml')
    ws_service = request.GET.get('servicio')
    archivo = '/DjangoProjects/xmlcbs/media/'+ archivo_request
    with open(archivo,"r") as file:
         request_data = file.read()

    target_url = "http://1.1.1.1:1111/services/" + ws_service + "?wsdl"
    headers = {'Content-type':'text/xml'}
    data_response = requests.post(target_url, data=request_data, headers=headers).text
    jdato = xmltodict.parse(data_response)
    data = json2html.convert(json = jdato)
    data_template = data

    return render_to_response('prueba.html', {'data':data_template})

此视图一次仅适用于一个用户,但当两个或更多用户提出请求时,数据将被覆盖。

知道如何使用具有不同请求和响应的同一视图来处理多个用户吗?

【问题讨论】:

  • 存档文件中是否有用户特定的数据?如果是这样,写该文件的内容和内容是什么?
  • 是的,每个用户都会根据不同的参数请求不同的信息。示例:user1 将从客户端 #123 请求数据,user2 将从客户端 #3456 或其他 Web 服务请求数据。
  • 您没有回答问题。在此代码中,您从磁盘读取文件并将其内容在请求中发送到外部 API。该文件应该是每个用户的吗?如果是这样,它是如何编写的?除了文件之外,这段代码中没有任何会引起用户间干扰的内容。
  • 是的,每个用户和每个 Web 服务都是一个文件。我希望读取一些 xml 文件以呈现包含所有需要的参数的表单,以向为用户选择的 Web 服务发出请求。使用表单的 POST 数据创建一个新的 xml 文件,用于发出请求。用户只共享相同的视图来发出请求并将模板中的响应呈现为 html 表

标签: python django web-services django-views


【解决方案1】:

将请求的参数存储在本地文件中是没有意义的。尤其是按照您的操作方式,该文件只能有一个版本;后续用户将覆盖前一个文件。

相反,将必要的数据存储在session

【讨论】:

  • 我知道,我在向 Web 服务发送请求时遇到了一些麻烦,应用程序使用了大约 25 到 30 个 Web 服务,每个 Web 服务至少有 10 个方法。我不熟悉 Django 会话,但如果您的方法适合我,我会阅读并尝试。谢谢
猜你喜欢
  • 2012-07-26
  • 2016-04-26
  • 2012-10-07
  • 2020-07-06
  • 2019-03-14
  • 2021-08-10
  • 2012-06-20
  • 2011-12-20
  • 1970-01-01
相关资源
最近更新 更多