当前位置: 首页 > 面试题库 >

仅在Django启动一次时执行代码?

哈宪
2023-03-14
问题内容

我正在编写一个Django中间件类,该类只想在启动时执行一次,以初始化一些其他人工代码。我遵循了sdolan 在此处发布的非常好的解决方案,但是“ Hello”消息两次输出到终端。例如

from django.core.exceptions import MiddlewareNotUsed
from django.conf import settings

class StartupMiddleware(object):
    def __init__(self):
        print "Hello world"
        raise MiddlewareNotUsed('Startup complete')

在我的Django设置文件中,该类已包含在MIDDLEWARE_CLASSES列表中。

但是当我使用runserver运行Django并请求页面时,我进入了终端

Django version 1.3, using settings 'config.server'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Hello world
[22/Jul/2011 15:54:36] "GET / HTTP/1.1" 200 698
Hello world
[22/Jul/2011 15:54:36] "GET /static/css/base.css HTTP/1.1" 200 0

有什么想法为什么要打印两次“ Hello world”?谢谢。


问题答案:

从以下Pykler的答案进行更新:Django 1.7现在对此具有钩子

不要这样

你不希望一次性使用“中间件”。

你要在顶层执行代码urls.py。该模块将被导入并执行一次。

urls.py

from django.confs.urls.defaults import *
from my_app import one_time_startup

urlpatterns = ...

one_time_startup()


 类似资料:
  • 问题内容: 我正在编写一个Django中间件类,该类只想在启动时执行一次,以初始化一些其他人工代码。我遵循了sdolan 在此处发布的非常好的解决方案,但是“ Hello”消息两次输出到终端。例如 在我的Django设置文件中,该类已包含在列表中。 但是当我使用runserver运行Django并请求页面时,我进入了终端 有什么想法为什么要打印两次“ Hello world”?谢谢。 问题答案:

  • 问题内容: 我正在使用Camel&Spring进行Java项目。在Spring完成其工作并且Camel完成所有路径的构建之后,我们想在单例bean上触发一个initialize方法。 我们无法在类创建时调用该方法,因为它具有从@Component spring批注中拾取的与其他类的动态链接,并且我们不知道何时/是否已加载这些类,而尚未真正将init方法作为a的一部分运行构造函数。 我如何才能在Ca

  • 如果必须保证一个方法在spring boot应用程序启动时只执行一次,那么的最佳替代方案是什么?

  • 问题内容: 我很难弄清楚为什么while循环实际上不会循环。它运行一次并停止。 我正在尝试使其循环,以便用户能够多次转换单位。任何帮助都欢迎! 问题答案: 问题在于,当您呼叫时,它会占用该号码,但不会占用该号码之后的换行符。要解决此问题,只需在调用后放一行代码。 示例和完整说明: 假设您输入“ km”,按回车,“ 123”,按回车。从程序的角度来看,输入流为。 该代码获取值,并且使输入超出第一个。

  • 问题内容: 尝试实现Spring批处理,但遇到一个奇怪的问题,我们的 类仅执行一次。 以下是详细信息。 如果我们在数据库中有1000行。 我们的项目读取器从数据库中获取1000行,并将列表传递给 成功删除所有项目。 现在,ItemReader再次尝试从数据库获取数据,但是没有找到,因此返回NULL,因此执行停止。 但是我们已将批处理配置为使用调度程序执行,即每分钟执行一次。 现在,如果我们通过转储

  • 苏,希望你们都没事。出于某种原因,在我的java代码中,当我按下一个键(当它工作时),我的ActionListener要求我保持计时器启动,否则会绘制一个矩形并显示JLabel simple的条件不会运行,因为ActionListener无法调用它。 这是工作代码。 下面是使actionEvent不执行的原因