Django 用相对路径方式引用自定义模块 或 文件

Django的文件夹结构 projectName/websiteName/appName

manage.py 所在路径为:D:/projectA/website1/manage.py

views.py 所在路径为:D:/projectA/website1/app1/views.py

D:/projectA/website1/app1/module1.py

如果要引用自定义模块,引用自定义的模块

from .A import AAA (在 if name == "main" 中会报错)

from A import AAA (在网页执行中会报错)

from websiteName.appName.moduleA import some_function

要在view.py中使用相对路径读取文件 D:/projectA/website1/app1/abc.txt

如果使用 with open("abc.txt", 'r') as f 会报错 FileNotFoundError: [Errno 2] No such file or directory

因为相对路径是相对于当前工作目录而言,而不是相对于views.py所在的目录

解决方案

要实现相对于views.py文件的相对路径来读取abc.txt,推荐使用Django提供的BASE_DIR设置来构建路径 。

复制代码
from django.conf import settings



def get_config():
    base_dir = settings.BASE_DIR
    config_file_path = os.path.join(base_dir, 'app1', 'myconfig.txt')
    
    with open(config_file_path, 'r') as config_file:
        config_data = config_file.read()
    
    return config_data

当在 if __name__ == "__main__": 块内使用相对导入时,容易犯的错误之一是与模块结构相关的错误。下面是一个示例,演示了在这种情况下可能发生的问题:

css 复制代码
mypackage/
    __init__.py
    main.py
    subpackage/
        __init__.py
        moduleA.py
        moduleB.py

这种情况下,建议使用绝对路径导入

相关推荐
老华带你飞1 小时前
博物馆展览门户|基于Java博物馆展览门户系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot·后端
It's now1 小时前
Spring Framework 7.0 原生弹性功能系统讲解
java·后端·spring
无限大61 小时前
Agent 入门科普:从"人工智障"到"数字打工人"的进化史
后端
测试19981 小时前
功能测试、自动化测试、性能测试的区别
自动化测试·python·功能测试·测试工具·职场和发展·性能测试·安全性测试
一 乐2 小时前
人事管理系统|基于Springboot+vue的企业人力资源管理系统设计与实现(源码+数据库+文档)
java·前端·javascript·数据库·vue.js·spring boot·后端
SelectDB2 小时前
浙江头部城商行:每日 700 万查询、秒级响应,Apache Doris 查算分离架构破局资源冲突
数据库·后端·apache
Data_agent2 小时前
1688获得1688店铺所有商品API,python请求示例
java·开发语言·python
一晌小贪欢2 小时前
【Python办公】-图片批量添加文字水印(附代码)
开发语言·python·图片水印·python水印·python添加水印·图片添加水印
追逐时光者2 小时前
分享 4 款基于 C# 编写、实用、开源的 Visual Studio 扩展插件
后端·.net·visual studio
海上飞猪2 小时前
【python】基础数据类型
python