带有 CORS 转储数据的 Django 1.9:“corsheaders_corsmodel”不存在
Posted
技术标签:
【中文标题】带有 CORS 转储数据的 Django 1.9:“corsheaders_corsmodel”不存在【英文标题】:Django 1.9 with CORS dumping data: "corsheaders_corsmodel" does not exist 【发布时间】:2016-03-24 18:18:53 【问题描述】:我正在开发一个带有跨站点引用的 Django (1.9) Rest 后端和 AngularJS 前端。在尝试执行./manage.py dumpdata
命令时,它会抛出以下异常:
$ python manage.py dumpdata -o dev/dumpdata.json
CommandError: Unable to serialize database: relation
"corsheaders_corsmodel" does not exist
LINE 1: SELECT COUNT(*) AS "__count" FROM "corsheaders_corsmodel"
知道怎么处理吗?
【问题讨论】:
您是否安装了当前版本的 corsheaders? django-cors-headers==1.1.0 您能否选择一个正确答案来回答这个问题?看来@myk-willis 是正确的。 【参考方案1】:我遇到了同样的问题,并通过专门为 corsheaders
应用程序调用 python manage.py makemigrations
来解决它:
$ python manage.py makemigrations corsheaders
$ python manage.py migrate
我认为在我的案例中发生的情况是,在从 Django 1.8 升级到 1.9 之后,当我更新我的数据库时,从未应用过初始迁移。
我通过注意到corsheaders
应用程序未在python manage.py migrate
的Apply all migrations
输出中列出来跟踪它:
$ python manage.py migrate
Operations to perform:
Apply all migrations: sessions, admin, xyz, auth, contenttypes
Running migrations:
No migrations to apply.
然而,为 corsheaders
运行手动迁移实际上会创建初始迁移:
$ python manage.py makemigrations corsheaders
Migrations for 'corsheaders':
0001_initial.py:
- Create model CorsModel
完成此操作后,migrate
会在输出中显示corsheaders
,并按预期成功应用迁移:
$ python manage.py migrate
Operations to perform:
Apply all migrations: corsheaders, sessions, admin, xyz, auth, contenttypes
Running migrations:
Rendering model states... DONE
Applying corsheaders.0001_initial... OK
【讨论】:
【参考方案2】:如果 corsheaders_corsmodel 表不存在,则没有要转储的数据。 所以你可以运行:
$python manage.py dumpdata --exclude=corsheaders
我遇到了同样的问题,我就是这样解决的。
【讨论】:
以上是关于带有 CORS 转储数据的 Django 1.9:“corsheaders_corsmodel”不存在的主要内容,如果未能解决你的问题,请参考以下文章
带有 CSRF/CORS 的带有 TokenAuthentication 的 Django REST 框架