[解決済み】Djangoの起動時にコードを実行するのは1回だけ?
2022-04-07 22:33:13
質問
私は Django Middleware クラスを書いていて、起動時に一度だけ実行し、他の arbritary コードを初期化したいのです。私は sdolan が投稿したとても素晴らしい解決策に従いました。 ここで しかし、ターミナルに "Hello" というメッセージが出力されます。 2回 . 例
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" が2回表示されるのか、何か思い当たることはありませんか?ありがとうございます。
解決方法を教えてください。
以下のPyklerの回答から更新しました。Django 1.7 では このためのフック
こんなやり方はやめましょう。
一度だけ起動するものには、"middleware"は必要ないでしょう。
トップレベルの
urls.py
. そのモジュールはインポートされて一度だけ実行されます。
urls.py
from django.confs.urls.defaults import *
from my_app import one_time_startup
urlpatterns = ...
one_time_startup()
関連
-
python call matlab メソッドの詳細
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】ilocが「IndexError: single positional indexer is out-of-bounds」を出す。
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python関数の高度な応用を解説
-
python string splicing.join()とsplitting.split()の説明
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
PythonによるExcelファイルの一括操作の説明
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?