关于Django: ImportError: attempted relative import beyond top-level package问题的疑惑

 

问题:

想要在urls.py中导入polls包中的views.py,于是试图使用:from .. import polls。结果在终端调用命令“python manage.py runserver”时报错:

 

 解决:

在网上查找了很久,学习了很多他人的想法(比如https://blog.csdn.net/suiyueruge1314/article/details/102683546以及https://blog.csdn.net/sky453589103/article/details/78863050),大概了解了原因出在最顶层的名字。尝试了很多办法,最后发现在urls.py中添加

import os
import sys
os.chdir(os.path.dirname(__file__))
sys.path.append("..")
然后再
import polls
即可。

疑惑:
本人刚接触Django,对于其内部构造和原理并不了解,由于在终端调用的命令通过manage.py实现,于是对manage.py究竟是如何调用urls.py的、为何urls.py的名字会不包括前几级包名感到疑惑。希望能够在后续的学习过程中加深对此的理解。

 

posted @ 2021-04-02 14:46  LuWuuu  阅读(1608)  评论(0)    收藏  举报