django项目中的问题总结

前端请求失败的错误码

  • 400 bad request 说明自定义的序列化器有问题
  • 401 Unauthorized 说明在进行请求视图的时候进行验证,没有通过,如果不想在进入视图的时候就进行验证JWT的话,可以重写 perform_authentication 方法,在request.user的时候会再进行验证的。
  • 404 not find 找不到页面,说明路由匹配出问题
  • 500 错误, 说明自己代码出现问题,或者服务器的问题

问题:表不存在或者No migrations to apply


"Table 'lab_data.bigdata_resdir' doesn't exist"

模型中建立新表后,makemigrations成功,但是migrate出现错误:

No migrations to apply.(即使实际上明明makemigrations成功,并且有许多migrations可以应用)
Your models have changes that are not yet reflected in a migration, and so won’t be applied. Run ‘manage.py makemigrations’ to make new migrations, and then re-run ‘manage.py migrate’ to apply them.
按照提示重新makemigration后migration文件就不会创建新表了,在数据库中表也的确没有新建。

原因:

  1. 可能是之前按照某个说明执行了一次python manage.py migrate –fake导致的。–fake 的含义是不执行该迁移脚本但是标记该脚本已经被执行过。导致之后无法正常进行迁移。
  2. Sounds like your initial migration was faked because the table already existed (probably with an outdated schema):https://docs.djangoproject.com/en/1.7/topics/migrations/#adding-migrations-to-apps

    “This will make a new initial migration for your app. Now, when you run migrate,Django will detect that you have an initial migration and that the tables it wants to create already exist, and will mark the migration as already applied.”

    Otherwise you would get an no-such-table error.
    [No migrations to apply, even though there are migrations to apply]

解决方案

In MySQL Database delete row ‘app_name’ from the table ‘django_migrations’.

打开mysql command line client, 进入创建好的数据库use databasename; 查看表select * from django_migration; 发现将要执行的迁移脚本的 id 已经添加在表中了,将其删除即可,即删除最新一次app_name对就的id行。
django项目中的问题总结_第1张图片

问题: django.db.utils.ProgrammingError: (1146, “Table ‘lab_data.django_migrations’ doesn’t exist”)

原因

模型类出错,但已经产生迁移文件,所以生成的时候会报错

解决方法

python manage.py migrate --fake

删除 即可

问题 :在迁移数据库的时候出现1060的错误

原因

数据库迁移顺序不对,数据库中的关联关系错乱

解决方法

针对个人开发,将数据库删除,将所有迁移文件删除,再重新进行迁移命令

你可能感兴趣的:(django,python)