python的Django views 文件中引入模块问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python的Django views 文件中引入模块问题相关的知识,希望对你有一定的参考价值。
文件结构如图,为什么在views文件中 必须要写from app01.common_model import data_model 才可以正确导入,,,,而直接写import common_model.data_model会报不存在此模块的错误?这个文件和views不是在同一根目录下吗?
看上面的图片,按你的导包方法,单独运行views是没问题的
但是在django里这样用不行,在运行django项目时,其实当前目录是整个项目的根目录
你可以在views目录下import os,然后 print(os.getcwd())查看当前目录:
打印的当前目录正是整个项目的根目录,我的是E:\\mypython\\day51...\\blw:
你这里的就是G:\\....Anno:
你要在Anno目录下导入data_model.py,是不是要带上app名才能进入子级目录对吧?
而且还有个问题就是,在以后的开发中,很有可能在不同app下有相同名字的模块或者方法,比如你这里有三个app,app01,app02,app03,这三个app下都有common_model,那到底按什么区分呢?所以前面最好带上app名。
不过真想方便,可以使用:from .common_model import data_model
【.】代指当前文件的目录,这是一种相对路径的导入
追问import app01.common_model.data_model前面为什么要加app01呢?views不是属于app01包中的吗,它和common_model在同一级,导入包的时候不是会自动寻找当前目录下的文件吗?按理说是可以找的 的呀
追答并不在同一级,你再看看你发的截图
参考技术A 入模块问题python_django_views文件中return render("XXXX/XXX.html") 显示 Template file not found
问题描述:
在使用django框架进行web开发的时候,views文件中return到模板文件中的某个html文件,但是显示的是template file not found 。而我在settings中的TEMPLATES的DIRS已经加入了template 路径。
代码如下:
settings.py
TEMPLATES = [ { \'BACKEND\': \'django.template.backends.django.DjangoTemplates\', \'DIRS\': [os.path.join(BASE_DIR, "templates")], \'APP_DIRS\': True, \'OPTIONS\': { \'context_processors\': [ \'django.template.context_processors.debug\', \'django.template.context_processors.request\', \'django.contrib.auth.context_processors.auth\', \'django.contrib.messages.context_processors.messages\', ], }, },
]
views.py
return render(request, \'account/login.html\', {\'form\': form})
原因分析:
寻找了N久,大概分析原因,pycharm并没有将你的templates文件当作模板文件,也就是说render的第二个参数的寻找范围不包含templates
解决方案:
我们将templates文件夹设置称为解析器默认的模板文件目录即可
1.鼠标右键你的模板文件夹
2.选择Mark Directory as(我的pycharm是倒数第三个)
3.选择Template Floder
选择Template Floder后我的Templates颜色变成了紫色
views.py文件不再显示not found
以上是关于python的Django views 文件中引入模块问题的主要内容,如果未能解决你的问题,请参考以下文章
python_django_views文件中return render("XXXX/XXX.html") 显示 Template file not found
django中将views.py中的python方法传递给html模板文件