2

djangoにスニペットをインストールするにはどうすればよいですか?(具体的にはこれ

私はファイルを持っていて、それをロードするために/{project}/snippets/EnforceLoginMiddleware.py内部で任意の数の順列を試しただけでなく、無駄にグーグルしました:(MIDDLEWARE_CLASSESdjango snippets install

どんな助けでもありがたいです:)

PS(スニペットのインストールに関するドキュメントや例が見つからないのはなぜですか。たぶん私はただの悪いグーグルです)

4

3 に答える 3

5

「スニペット」はDjangoの特定の要素を指しているのではなく、単に次のことを意味します。ここに使用するコードがあります。この場合、それはミドルウェアであり、Webリクエストの前後に呼び出される特定のDjangoモジュールです。必要に応じてdjangoのドキュメントを読む

私もこのミドルウェアを使用しています。メインのアプリケーションフォルダーで呼び出されるファイルにすべてを貼り付けるだけですmiddleware.py(このアプリがで言及されている場合は、どのアプリフォルダーでもかまいませんINSTALLED_APPS

settings.py次に、これらの行をファイルに追加します。

MIDDLEWARE_CLASSES = (
    #...all others middleware, on the last line, paste :
    'main.middleware.EnforceLoginMiddleware',
)

ここでファイルを置いたアプリはと呼ばれていることに注意してくださいmain。あなたのアプリの名前は異なる場合があります。

スニペットのdocstringを読むことを忘れないでください:

Middlware class which requires the user to be authenticated for all urls except 
those defined in PUBLIC_URLS in settings.py. PUBLIC_URLS should be a tuple of regular 
expresssions for the urls you want anonymous users to have access to. If PUBLIC_URLS 
is not defined, it falls back to LOGIN_URL or failing that '/accounts/login/'.  
Requests for urls not matching PUBLIC_URLS get redirected to LOGIN_URL with next set 
to original path of the unauthenticted request. 
Any urls statically served by django are excluded from this check. To enforce the same
validation on these set SERVE_STATIC_TO_PUBLIC to False.
于 2011-01-17T12:39:02.880 に答える
2

スニペットがPYTHONPATH(sys.path)にあること、またはスニペットがPYTHONPATHに存在するモジュール内にあることを確認する必要があります。

この場合、__init__.pyスニペットフォルダーにファイルを追加すると、スニペットフォルダーがモジュールとして扱われ、それを実行できますfrom snippets.EnforceLoginMiddleware import EnforceLoginMiddleware。これはあなたが見逃している重要なステップだと思います。

ミドルウェアクラスは次のようになります。

MIDDLEWARE_CLASSES = (..., 'snippets.EnforceLoginMiddleware.EnforceLoginMiddleware')
于 2011-01-17T12:40:50.400 に答える
1

この例では、MIDDLEWARE_CLASSESへの新しいエントリは「{project} .snippets.EnforceLoginMiddleware.EnforceLoginMiddleware」のようになっている必要があります(プロジェクトのパッケージ名に置き換えてください)。

スニペットフォルダにも__init__。pyファイルがあることを確認してください。

PS:それはおそらく、Djangoの公式コンポーネントに関しては「スニペット」のようなものがないためです。これらは通常、単純なPythonコードフラグメントであり、そのように扱う必要があります。Djangosnippetsは、djangoコード(スニペットとも呼ばれます)を投稿して共有できるサイトです。

于 2011-01-17T12:38:54.143 に答える