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模板文件

Python+Django+js+echarts引入本地js文件的操作方法

如何从views.py文件将数据插入django数据库?

Django:视图views

django中三种判断请求类型的方法