首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安装代码段

安装代码段
EN

Stack Overflow用户
提问于 2011-01-17 12:15:28
回答 3查看 1.4K关注 0票数 2

如何在django中安装代码片段?(特别是)

我有文件/{project}/snippets/EnforceLoginMiddleware.py,我尝试了MIDDLEWARE_CLASSES中的任意数量的排列来加载它,并且在googling中搜索django snippets install也没有结果:

如有任何帮助,将不胜感激:)

PS(为什么我找不到关于安装代码片段的任何文档或示例。也许我只是个糟糕的谷歌人)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-17 12:39:02

“代码段”没有指向Django的特定元素,它只是意味着:这里有一段代码供您使用。在本例中,它是一个中间件,是一个特定的Django模块,将在web请求之前和之后调用。如有需要,可使用读django博士

我也使用这个中间件,只需将所有内容粘贴到主应用程序文件夹中的一个名为middleware.py的文件中(考虑到INSTALLED_APPS中提到这个应用程序,任何应用程序文件夹都可以)。

然后在settings.py文件中添加以下行:

代码语言:javascript
复制
MIDDLEWARE_CLASSES = (
    #...all others middleware, on the last line, paste :
    'main.middleware.EnforceLoginMiddleware',
)

请注意,在这里,我放置该文件的应用程序名为main,您的应用程序的名称可能有所不同。

不要忘记读取代码片段的docstring:

代码语言:javascript
复制
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.
票数 5
EN

Stack Overflow用户

发布于 2011-01-17 12:40:50

您需要确保您的代码片段在PYTHONPATH (sys.path)上,或者在PYTHONPATH上存在的模块中。

在这种情况下,如果您将一个__init__.py文件添加到您的代码段文件夹中,这将将代码片段文件夹作为一个模块来处理,然后您可以执行from snippets.EnforceLoginMiddleware import EnforceLoginMiddleware。我觉得这是你错过的关键一步。

然后,您的中间件类将类似于:

代码语言:javascript
复制
MIDDLEWARE_CLASSES = (..., 'snippets.EnforceLoginMiddleware.EnforceLoginMiddleware')
票数 2
EN

Stack Overflow用户

发布于 2011-01-17 12:38:54

在您的示例中,到MIDDLEWARE_CLASSES的新条目必须看起来类似于MIDDLEWARE_CLASSES(用项目的包名替换)。

确保您的代码片段文件夹也有一个__init__.py文件!

P.S.:这可能是因为在Django中没有所谓的“代码片段”。它们通常是简单的Python代码片段,必须作为这样的代码来处理。Djangosnippet只是一个站点,您可以在其中发布和共享django代码(也称为代码段)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4713017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档