Django报错解决方案集合

【运行环境】:

  1. Python-3.6.6
  2. Django-2.0.7
  3. MySQL-5.7
  4. navicat

一、外键引用其他app中的model报错

【问题描述】:如下图,我欲在operationapp的models中引用coursesapp的models中的Course
在这里插入图片描述
部分代码如下:

# operation.models.py
from courses.models import Course
class UserCourse(models.Model):
	course = models.ForeignKey('Course', verbose_name=u'课程', on_delete=models.CASCADE)

运行makemigrations或者migrate命令时报错如下:
在这里插入图片描述
【问题分析】:由错误显示可知,我们虽然在operationapp的models.py中引用了coursesapp的models中的Course,但其实程序并未识别,还是显示当前app没有提供Course,上网查了半天,有的博客说是需要找到自己的/python3X/lib/site-packages/django/contrib/admin/migrations文件夹,把里面除了__init__.py的所有文件,尝试无果,遂自己分析原因。

【解决方案】:将以上代码修改成如下形式:

from courses.models import Course
class UserCourse(models.Model):
	course = models.ForeignKey(to=Course, verbose_name=u'课程', on_delete=models.CASCADE)

【小结】:基于Django-2.1版本语法
①引用当前app的models的外键使用:

models.ForeignKey('self', on_delete=models.CASCADE)

①引用其他app的models的外键使用:

models.ForeignKey(to=self, on_delete=models.CASCADE)

关于on_delete参数的用法详见官方文档on_delete篇

二、Command ‘runserver’ took too long and may freeze everything.

【问题描述】:偶尔快捷键频繁运行Run manage.py Task时报错如下:
在这里插入图片描述
【解决方案】:等待几秒钟,在PyCharm菜单栏的Tools选项卡中重新Run manage.py Task一下。原因不详~
在这里插入图片描述

三、ImportError: cannot import name ‘RemovedInDjango20Warning’

【问题描述】:笔者在github试图clonexadmin源码后引用到自己的django(2.0.7)项目中(直接pip太慢,等了10分钟都还在卡顿~),后运行项目时报错如下:
在这里插入图片描述
【解决方案】:删除之前下载的xadmin,并通过以下git命令把xadminclone到本地然后在引用即恢复正常。(适用于django-2.0.x)

$ git clone -b django2 https://github.com/sshwsfc/xadmin.git

这里给出我的云盘链接:https://pan.baidu.com/s/1Zm-Q-JX8P_fg291kyHV8Bw
提取码:g5ic

四、ModuleNotFoundError: No module named ‘django.core.context_processors’

【问题描述】:在Django-2.0.7版本中的setting.py文件中加入图片处理器后运行项目到目标页面时报错没有django.core.context_processors模块。

# setting.py
'context_processors': [
                ...
                # 添加图片处理器
                'django.core.context_processors.media',
            ],

报错原图如下
在这里插入图片描述
网页报错如下:
在这里插入图片描述
【解决方案】:context_processors在Django-1.9中是在core里的,到2.0版本时放在template目录下了。
将如下代码

'django.core.context_processors.media',

替换为

'django.template.context_processors.media',

五、Specifying a namespace in include() without providing an app_name

【问题描述】:在Django-2.0.7版本中的项目文件夹中的urls.py文件中使用include()方法,配namespace命名空间参数,报错没有提供app名字。
在这里插入图片描述
【解决方案】:
在你引用的app文件夹下的organization\urls.py,添加如下代码即可。

app_name = 'organization' # 我当前所用的app是organization

持续积累中。。。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SL_World

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值