当前位置: 首页 > news >正文

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 settingsdef get_config():base_dir = settings.BASE_DIRconfig_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__": 块内使用相对导入时,容易犯的错误之一是与模块结构相关的错误。下面是一个示例,演示了在这种情况下可能发生的问题:

mypackage/__init__.pymain.pysubpackage/__init__.pymoduleA.pymoduleB.py

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

http://www.lryc.cn/news/161874.html

相关文章:

  • 企业架构LNMP学习笔记22
  • uniapp和小程序设置tabBar和显示与隐藏tabBar
  • 物联网、无线通讯
  • Pod和容器设计模式
  • docker系列(3) - 常用软件安装
  • Apache Hive之数据查询
  • OpenCV---视频操作
  • 《TCP/IP网络编程》阅读笔记--进程间通信
  • mysql中show status参数介绍
  • Tomcat服务的部署及配置优化
  • 入门力扣自学笔记279 C++ (题目编号:1123)
  • 【AIGC专题】Stable Diffusion 从入门到企业级实战0402
  • 【Spring事务】Spring事务的传播机制(通俗易懂)
  • 使用 Python 的高效相机流
  • pycharm使用
  • C++项目实战——基于多设计模式下的同步异步日志系统-②-相关技术补充(不定参函数)
  • iOS开发Swift-10-位置授权, cocoapods,API,天气获取,城市获取-和风天气App首页代码
  • CNN(七):ResNeXt-50算法的思考
  • 【人月神话】深入了解软件工程和项目管理
  • 52、基于函数式方式开发 Spring WebFlux 应用
  • MySQL的用户管理
  • LeetCode //C - 114. Flatten Binary Tree to Linked List
  • 利用transform和border 创造简易图标,以适应uniapp中多字体大小情况下的符号问题
  • C/C++指针函数与函数指针
  • 30天入门Python(基础篇)——第1天:为什么选择Python
  • 智慧公厕破解公共厕所管理的“孤岛现象”
  • excel中删除重复项
  • 2023-9-8 求组合数(三)
  • 01 - Apache Seatunnel 源码调试
  • UVA-12325 宝箱 题解答案代码 算法竞赛入门经典第二版