Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python,Django-如何在中间件中存储http请求?_Python_Django_Middleware - Fatal编程技术网

Python,Django-如何在中间件中存储http请求?

Python,Django-如何在中间件中存储http请求?,python,django,middleware,Python,Django,Middleware,也许这个问题听起来很傻,但我想不出如何做到这一点,我相信这是最简单的问题(因为刚刚开始学习Django) 我知道的是我应该创建一个中间件文件并将其连接到设置。然后创建一个视图和一个*.html页面,显示这些请求并将其写入URL 如何在中间件中存储最后(5/10/20或任何)http请求并在*.html页面中显示它们?问题是,我甚至不知道应该以在*.html文件中显示的方式将哪些内容写入middlaware.py和views.py。理想情况下,此页面也应在新请求发生后更新。我阅读了Django文

也许这个问题听起来很傻,但我想不出如何做到这一点,我相信这是最简单的问题(因为刚刚开始学习Django)

我知道的是我应该创建一个中间件文件并将其连接到设置。然后创建一个视图和一个*.html页面,显示这些请求并将其写入URL

  • 如何在中间件中存储最后(5/10/20或任何)http请求并在*.html页面中显示它们?问题是,我甚至不知道应该以在*.html文件中显示的方式将哪些内容写入middlaware.py和views.py。理想情况下,此页面也应在新请求发生后更新。我阅读了Django文档,以及其他一些带有中间件示例的主题,但它对我来说似乎非常复杂
我真的很感谢任何见解和解释


请注意,再一次为一个假问题感到抱歉。

您可以实现自己的
请求中间件
(在URL解析之前插入)或
视图中间件
(在URL解析视图之后插入)

在该中间件中,它是标准的python。您可以访问文件系统、数据库、缓存服务器。。。与代码中其他地方相同


在单独的网页中显示最后N个请求意味着您创建了一个视图,从中间件存储数据的位置提取数据。

您可以实现自己的
RequestMiddleware
(在URL解析之前插入)或
viewmidleware
(在为URL解析视图后插入)

在这个中间件中,它是标准的python。您可以访问文件系统、数据库、缓存服务器等,就像您在代码中的其他地方一样


在单独的网页中显示最后N个请求意味着您创建了一个视图,从中间件存储数据的位置提取数据。

首先,正如您所说,您需要一个模型来将请求信息保存在数据库中。创建并迁移新模型后,您可以编写自定义中间件并在中执行您想要的操作de>处理请求方法:

from yourapp.models import YourModel

class CustomDebugMiddleware_first(object):
    def process_request(self, request):
         new_http_information = YourModel(http_info=INFO_YOU_WANT_TO_SAVE)
         new_http_information.save()

然后,在您的settings.py中将该中间件的路径放入
中间件类

中,首先,正如您所说,您需要一个模型来将请求信息保存在数据库中。创建并迁移新模型后,您可以编写自定义中间件,并在
处理请求
方法中执行所需操作:

from yourapp.models import YourModel

class CustomDebugMiddleware_first(object):
    def process_request(self, request):
         new_http_information = YourModel(http_info=INFO_YOU_WANT_TO_SAVE)
         new_http_information.save()

然后将这个中间件的路径放在你的settings.py中的
middleware\u CLASSES

你不能将HTTP请求存储在中间件本身中。你需要将它们保存到数据库中。谢谢你的回答,@DanielRoseman)但是,我不知道应该为此编写哪些代码。我已经读了很多博客,但还是一无所获。就像你把其他东西保存到数据库一样。您到底遇到了什么问题?@DanielRoseman,首先,在middleware.py中编写正确的代码。比如--class SaveHttpRequests(object):def process_request(self,request):--接下来呢?或者这是一个完全错误的概念?看起来我必须为此创建模型。但是middleware.py中的正确代码仍然是个问题。您不能在中间件本身中存储HTTP请求。您需要将它们保存到数据库中。谢谢您的回答,@DanielRoseman)但是,我不知道应该为此编写哪些代码。我已经读了很多博客,但还是一无所获。就像你把其他东西保存到数据库一样。您到底遇到了什么问题?@DanielRoseman,首先,在middleware.py中编写正确的代码。比如--class SaveHttpRequests(object):def process_request(self,request):--接下来呢?或者这是一个完全错误的概念?看起来我必须为此创建模型。但是middleware.py中的正确代码仍在讨论中。谢谢你的评论,这对我来说非常有意义(对于初学者来说)谢谢你的评论,对于我来说非常有意义(对于初学者来说)谢谢你的回答)谢谢你的回答)