相关疑难解决方法(0)

当Django只启动ONCE时执行代码?

我正在编写一个Django Middleware类,我想在启动时只执行一次,以初始化其他一些arbritary代码.我已经按照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')
Run Code Online (Sandbox Code Playgroud)

在我的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
Run Code Online (Sandbox Code Playgroud)

任何有关"Hello world"打印两次的想法?谢谢.

python django

153
推荐指数
7
解决办法
7万
查看次数

重新定义AppConfig.ready()

Django 1.9.

试图学习信号.在AppConfig.ready()的文档中,据说"子类可以覆盖此方法来执行初始化任务,例如注册信号".(https://docs.djangoproject.com/en/1.9/ref/applications/#django.apps.AppConfig.ready).

some_app/apps.py

class SomeAppConfig(AppConfig):
    name = 'some_app'

    def ready(self):
        print("Redefined ready method in some_app")
Run Code Online (Sandbox Code Playgroud)

demo_signals/settings.py

INSTALLED_APPS = [
    ...
    "some_app.apps.SomeAppConfig",
]

python manage.py runserver
Redefined ready method in some_app
Redefined ready method in some_app
Performing system checks...

System check identified no issues (0 silenced).
May 25, 2016 - 15:15:58
Django version 1.9.6, using settings 'demo_signals.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Run Code Online (Sandbox Code Playgroud)

请注意,"some_app中的重新定义的就绪方法"打印两次.

你能帮我理解为什么它被召唤两次.这不是我的错,为什么注册信号需要两次调用?

django django-signals

4
推荐指数
1
解决办法
1693
查看次数

标签 统计

django ×2

django-signals ×1

python ×1