情况
- 我已经用几个应用程序构建了 Django 3.0 项目。
- 我已经根据以下课程创建了帐户应用程序,它是github
- 比我创建了一个身份验证应用程序
acc
- 所有这些都在SQLite数据库中完成
- 以前我已经为早期应用程序尝试了一个PostgreSQL数据库,它运行良好
- 但是现在当我在 settings.py 文件中将SQLite切换到PostgreSQL时出现错误,我尝试登录
- 如果我将 settings.py 切换回SQLite ,一切正常(例如:身份验证、使用用户登录、用户使用自己的设置在网站上执行操作)
- 我使用 decorators.py 来保持登录用户访问登录和注册页面,当我切换到 postgresql 时会出错。我只在这里使用
HttpResponse
错误消息包含
装饰器.py
from django.http import HttpResponse
from django.shortcuts import redirect
def unauthenticated_user(view_func):
def wrapper_func(request, *args, **kwargs):
if request.user.is_authenticated:
return redirect('home')
else:
return view_func(request, *args, **kwargs)
return wrapper_func
def allowed_users(allowed_roles=[]):
def decorator(view_func):
def wrapper_func(request, *args, **kwargs):
group = None
if request.user.groups.exists():
group = request.user.groups.all()[0].name
if group in allowed_roles:
return view_func(request, *args, **kwargs)
else:
return HttpResponse('Authorized')
return wrapper_func
return decorator
错误
如果我在 settings.py 使用PostgreSQL时登录。如果我注销一切正常。如果我使用 SQL lite,我可以登录并且一切正常
ValueError at /
The view accounts.decorators.wrapper_function didn't return an HttpResponse object. It returned None instead.
Request Method: GET
Request URL: http://localhost...
Django Version: 3.0
Exception Type: ValueError
Exception Value: The view accounts.decorators.wrapper_function didn't return an HttpResponse object. It returned None instead.
Exception Location: /Users/.../python3.7/site-packages/django/core/handlers/base.py in _get_response, line 126
Python Executable: /Users/.../bin/python3
Python Version: 3.7.3
.....
Request information
USER MYUSERNAME
GET No GET data
POST No POST data
FILES No FILES data
COOKIES ...
...
试图解决
- 我遵循的指南创建了我在迁移的 postgreSQL 数据库中也做过的用户组,但我仍然在评论部分收到与 USER1 相同的错误。
- 这是视频底部的建议
- “USER1我找到了,我忘记更改用户组了!
- --> USER2 转到管理面板,然后在您的用户部分中,在所选组部分中添加客户”。
- 我确实做到了,但没有奏效,唯一的区别是我使用了迁移的 postgresql,他们使用了原始的 SQLight .
- 我在两个数据库中都有数据和表,但一些老员工使用PostgreSQL ,所有东西都使用SQLite。
- 我尝试使用本指南将SQLite迁移到PostgreSQL。
- 我已成功创建 SQLite 数据库的副本
- 但是当我将设置更改为 postgres 并尝试
python manage.py migrate
时说Running migrations: No migrations to apply.
python manage.py loaddata db.json
- 用户已从 SQLite 迁移(我可以使用他们登录并得到错误,就像唯一的 SQlite 用户一样,如果我输入错误的用户或密码,它不允许我进入),但我没有看到任何数据表在 Postgresql 中,如果我用 IDE 查找它
- 我在论坛上与其他人交谈过,但很多人说这是有问题的装饰器文件,但它只发生在数据库切换时。
- 我创建了一个新的 postgresql 数据库,并尝试迁移所有内容(迁移尚未迁移所有内容)。比我尝试使用新帐户注册时,它在填写表单按下提交后给了我以下错误消息
DoesNotExist at /register/
Group matching query does not exist.
所以这就是我解决它的方法。
Home › Authentication and Authorization › Groups › customer