Назад |
Перейти на главную страницу
SQLite работает, но перенесенная база данных PostgreSQL вызывает ОШИБКУ - Django 3.0
Ситуация
- Я создал проект Django 3.0 с парой приложений.
- Я создал приложение для учетных записей на основе следующих курс и это github
- Затем я создал приложение для аутентификации
acc
- Все это было сделано в SQLite база данных
- Раньше я пробовал PostgreSQL база данных для раннего приложения, которая работала нормально
- но теперь, когда я переключаюсь в файле settings.py, SQLite к PostgreSQL Я получаю сообщение об ошибке я пытаюсь войти
- Если я снова переключу settings.py на SQLite все работает отлично (например: аутентификация, вход в систему с пользователем, пользователь делает что-то на веб-сайте со своими настройками)
- Я использую decorators.py, чтобы сохранять авторизованных пользователей, посещающих страницы входа и регистрации, и это дает ошибку, когда я переключаюсь на postgresql. Я использую только здесь
HttpResponse
что сообщение об ошибке содержит
decorators.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 я нашел, забыл сменить группу пользователя!
- -> ПОЛЬЗОВАТЕЛЬ2 зайти в админку и в пользовательском разделе добавить клиента в выбранный раздел группы ».
- Я сделал именно это, и это не сработало, единственная разница в том, что я использовал перенесенный postgresql, и они использовали исходный SQLight, который, если я использую, все это работает и для меня, но я хочу, чтобы он работал с PostgreSQL .
- У меня есть данные, таблицы в обеих базах данных, но 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
- добавление функций, которые разрешил пользователю:
...
accounts customer can view customer
...
- Затем я выхожу из окна администратора
- Я вхожу в систему как обычно и все работает