我正在构建一个django视图,它返回给定HTTP请求中传递的经度和纬度的城镇名称。为了执行这些计算,我编写了一个函数,它需要打开一个位于django项目外部的Geojson文件。此函数与视图在同一个文件中:
/home/erwan/Images/eosya_app/backend/api/municipality/compute_municipality_view.py
字符串
在这个函数中,我执行了以下打开操作,但是django没有找到文件。
with open('../../../database/unparsed_data/administrative_boundaries/my_file.geojson','r') as f:
型
我做了一些研究,了解到我必须在设置中定义一个基本目录路径,才能访问外部文件。我在我的www.example.com上添加了以下行setting.py:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
FILES_DIR = os.path.abspath(os.path.join(BASE_DIR, '../database/unparsed_data'))
型
我在函数中相应地更新了文件路径:
file_path = os.path.join(settings.FILES_DIR, '/administrative_boundaries/france-geojson-master/departements.geojson')
型
但是django仍然无法找到文件。此外,打印与预期路径不匹配。看起来好像没有考虑FILE_DIR。下面是打印的结果:
/administrative_boundaries/france-geojson-master/departements.geojson
型
我还尝试验证我的项目根路径,但没有成功:
print(settings.SITE_ROOT)
AttributeError: 'Settings' object has no attribute 'SITE_ROOT'
型
我做错了什么,如何在这个函数中访问我的geojson文件?
2条答案
按热度按时间pgky5nke1#
在
/home/erwan/Images/eosya_app/backend/api/municipality/compute_municipality_view.py
中:字符串
q35jwt9p2#
在您的settings.py中,您应该使用以下行来定义BASE_DIR:
字符串
假设你的Django项目结构是这样的:
型
在compute_municipality_view.py中,您可以像这样访问Geojson文件:
型
通过使用settings.BASE_DIR,您可以获得Django项目的基目录路径,然后您可以构造相对于基目录的Geojson文件的路径。