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__":
块内使用相对导入时,容易犯的错误之一是与模块结构相关的错误。下面是一个示例,演示了在这种情况下可能发生的问题:文章来源:https://www.toymoban.com/news/detail-701645.html
mypackage/
__init__.py
main.py
subpackage/
__init__.py
moduleA.py
moduleB.py
这种情况下,建议使用绝对路径导入文章来源地址https://www.toymoban.com/news/detail-701645.html
到了这里,关于Django 用相对路径方式引用自定义模块 或 文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!