Django报错说明整理


(venv) E:\python_vm01\django_lesson>python3 manage.py runserver 8080
Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\threading.py", line 926, in _bootstrap_inner
self.run()

 

django.core.exceptions.ImproperlyConfigured: Application labels aren't unique, duplicates: blog

提示标签blog重复了。  排查setting 中  blog配置文件中已经添加过目录

 

————————————————————————————————————————————————————————————————————————————

TypeError: init() missing 1 required positional argument: ‘on_delete’

代码如下:

 

from django.db import models

# Create your models here.
class Contract(models.Model):
    nid   = models.AutoField(primary_key=True)
    name  = models.CharField(max_length=120)
    price = models.DecimalField(max_digits=9, decimal_places=2, default=0)

class Project(models.Model):
    nid   = models.AutoField(primary_key=True)
    name  = models.CharField(max_length=120)
    price = models.DecimalField(max_digits=9, decimal_places=2, default=0)

    # 与Contract建立一对多的关系
    contract = models.ForeignKey(Contract)
————————————————

 

当执行 python manage.py makemigrations 出现错误:TypeError: init() missing 1 required positional argument: ‘on_delete’

解决方案:
定义外键的时候需要加上 on_delete=;
即:contract = models.ForeignKey(Contract, on_delete=models.CASCADE)

原因如下:
django 升级到2.0之后,表与表之间关联的时候,必须要写on_delete参数,否则会报异常:
TypeError: init() missing 1 required positional argument: ‘on_delete’

on_delete各个参数的含义如下:

on_delete=None,               # 删除关联表中的数据时,当前表与其关联的field的行为
    on_delete=models.CASCADE,     # 删除关联数据,与之关联也删除
    on_delete=models.DO_NOTHING,  # 删除关联数据,什么也不做
    on_delete=models.PROTECT,     # 删除关联数据,引发错误ProtectedError
    # models.ForeignKey('关联表', on_delete=models.SET_NULL, blank=True, null=True)
    on_delete=models.SET_NULL,    # 删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空,一对一同理)
    # models.ForeignKey('关联表', on_delete=models.SET_DEFAULT, default='默认值')
    on_delete=models.SET_DEFAULT, # 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值,一对一同理)
    on_delete=models.SET,         # 删除关联数据,
     a. 与之关联的值设置为指定值,设置:models.SET(值)
     b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)

 


由于多对多(ManyToManyField)没有 on_delete 参数,所以以上只针对外键(ForeignKey)和一对一(OneToOneField)
_________________________________________________________________________________________________________

Django – 安装mysqlclient错误:需要mysqlclient 1.3.13或更新版本;你有0.9.3

mysqlclient 1.3.13 or newer is required; you have 0.9.3

我尝试了所有建议的修复程序,包括:
– 升级点子
– 使用命令pip install mysqlclient-1.4.2-cp37-cp37m-win32.whl安装不同的轮子(32位而不是64位),即mysqlclient-1.4.2-cp37-cp37m-win32.whl(这样可以正常工作错误但不能完成所需的工作!)

我的目标是简单地将遗留的mysql数据库(在XAMPP和myphpadmin中运行)连接到Django.我已经按照文档忽略了安装mysqlclient的需要,并且已经陷入困境.

最佳答案
这是我修复它的方式.

 

转到你的django / db / backends / mysql安装目录.
在错误消息中检查您的路径.

我正在使用pipenv所以我的路径是:

 

/home/username/.local/share/virtualenvs/project-env/lib/python3.7/site-packages/django/db/backends/mysql

打开文件base.py并搜索:

version = Database.version_info

在if和comment行中放入一个pass:

 

像这样.

 

if version < (1, 3, 13):
   pass
   '''
   raise ImproperlyConfigured(
       'mysqlclient 1.3.13 or newer is required; you have %s.'
       % Database.__version__
   )
   '''

保存,关闭此文件并打开operations.py

搜索:

 

query = query.decode(errors='replace')

并将解码更改为编码

 

query = query.encode(errors='replace')

现在,尝试运行服务器.

_________________________________________________________________________________________________________________________________________________________________________________________________________

一.异常信息

在连接数据库时,突然出现了异常异常信息:

books@localhost: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized o ... more

也就是说,出现了mysql的无效连接属性异常:服务器时区值无法辨认或表示多个时区,如果你想使用时区支持,你必须通过服务器时区配置属性来配置服务器或JDBC驱动从而使用更具体的时区值。

二.异常原因
这是因为 mysql升级到8.0及以上,添加了许多新特性,安全性也得到提升。当然操作时也增加了些繁琐,需要考虑到的时区问题便是其中之一。

三.解决办法
1.通过配置JDBC驱动的连接字符串:
即配置url参数中的serverTimezone属性来解决异常,需要在连接字符串 url 后加上 serverTimezone=UTC.

2.服务器默认时区跟随系统时区。通过服务器时区配置属性来配置服务器的时区。

select now();

2.2 查看当前mysql区时

show variables like "%time_zone%";

2.3 修改mysql时区

//修改mysql全局时区为东八区,即表示北京时间
 
set global time_zone = '+8:00';
 
flush privileges;
 
//时区修改生效之后,再次查询mysql时区
 
show variables like "%time_zone%";

____________________________________________________________________________________________________________________________________________________________________________________________________________

 

page not found

正则表达式 url路径分发使用   找不到页面

 

 

pip下载超时时间设置pip升级超时Traceback (most recent call last):

  1. 在自己的user目录(C:\Users\用户名)建一个pip文件夹,有的话就不用建了

    怎么解决pip下载慢,超时等问题
  2.  

    在pip文件夹下建一个pip.ini文件

    怎么解决pip下载慢,超时等问题
  3.  

    在pip.ini文件里面加上这两句

    [global] 

    index-url = http://mirrors.aliyun.com/pypi/simple/ 

    [install] 

    trusted-host=mirrors.aliyun.com 

    怎么解决pip下载慢,超时等问题
  4. 4

    保存一下再运行pip就好了


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM