首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >context_processors.py:文件路径?

context_processors.py:文件路径?
EN

Stack Overflow用户
提问于 2020-04-21 14:44:08
回答 2查看 83关注 0票数 0

我在我的settings.py中声明的一个应用程序中有一个context_processors.py文件,它可以工作。但是,由于context_processors.py文件的数据对所有项目都是通用的,所以我想在项目的根目录中声明它,但文件无法识别……

当前项目的架构

代码语言:javascript
复制
- myproject
  - myproject
  - myapp
    - context_processors.py

在settings.py中声明如下:

代码语言:javascript
复制
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            os.path.join(BASE_DIR,'registration/templates'),
            os.path.join(BASE_DIR,'templates'),
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'myapp.context_processors.data_context_processor',    <********************
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

预期项目的架构

代码语言:javascript
复制
- myproject
  - myproject
    - context_processors.py
  - myapp

我应该如何在settings.py中声明我的context_processors.py文件?我尝试使用os.path.join(BASE_DIR,'context_processors.data_context_processor'),但不起作用……

EN

回答 2

Stack Overflow用户

发布于 2020-04-21 14:47:50

使用python模块/包点符号

代码语言:javascript
复制
'context_processors': [
    'myproject.context_processors.data_context_processor',    
    ...
]

来源:https://docs.python.org/3/reference/import.html#packages

票数 2
EN

Stack Overflow用户

发布于 2020-04-21 15:12:14

通常,当使用django设置来引用软件组件(模块、类或可调用的)时,期望的不是文件系统路径,而是python限定路径(参见点符号,类似于引用对象的属性或方法的方式)。然后将使用与任何Python模块相同的解析规则动态导入(您可能希望在Python文档中阅读此内容)。

因为项目的根路径总是被认为是你的sys.path ( python搜索模块和包的目录列表)中的第一个,如果你想引用一个位于项目根目录顶层的模块或包,你只需直接使用模块或包的名称-就像你在设置INSTALLED_APPS中所做的那样来引用你的应用程序。在你的例子中,my_project看起来就是‘项目文件夹’(包含你的设置,根url conf等等),从技术上讲,它是你项目根顶层的一个包,所以预期的python限定名是"my_project.context_processors.data_context_processor"

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

https://stackoverflow.com/questions/61337437

复制
相关文章

相似问题

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