我在app应用文件夹下嵌套了的爬虫代码,因为要调用数据库,为了省事就调用django的orm进行数据库操作。

在项目构建时,改了django的框架的目录结构,其结果如下:
在这里插入图片描述
settings修改寻找app应用的路径:
在这里插入图片描述

sys.path.insert(0, os.path.join(BASE_DIR, r"chart_analysis/apps"))

models.py代码:

from django.db import models

# Create your models here.

class File(models.Model):
    name = models.CharField(max_length=50)
    date1 = models.DateTimeField(auto_now=True, null=True)
    date2 = models.DateTimeField(auto_now_add=True, null=True)
    file = models.ImageField(upload_to='file', null=True)  # 写上upload_to,后面指定一个路径,那么将来上传的文件会直接生成到配置文件中的那个medias文件夹中的img文件夹中,不需要我们自己写读取文件内容写入本地文件的操作,django内部帮我们自动处理了

脚本调用代码:

import json
from datetime import datetime
import pymysql
import os,sys

if __name__ == '__main__':

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "chart_analysis.settings")#manage.py文件中有同样的环境配置

    import django

    django.setup()#启动django项目
	
	# 下面注释我报错的引入
    # from  chart_analysis.apps.home.models import File  #引入models.py模型模块

    from home.models import File  #引入models.py模型模块

    books = File.objects.all().first()
    # for i in books:
    #     print(i.name)
    print(books.name)

引起这个bug的原因:
以下引用路径不正确,因为在配置文件中我们已经告诉Django去apps下去找各个app了,所以引用各app下的模型文件时,直接from home即可。

错误代码:

    from chart_analysis.apps.home.models import File  #引入models.py模型模块

解决办法:
修改引用如下

    from home.models import File  #引入models.py模型模块

来源:
https://www.huaweicloud.com/articles/12565083.html

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐