Ошибка 500 сервера с структурой Django RESTPython

Программы на Python
Ответить
Anonymous
 Ошибка 500 сервера с структурой Django REST

Сообщение Anonymous »

Я использую django/drf с Joser и djangorestframework-simplejwt для создания API для полной аутентификации, включая регистрацию, вход, активацию, забыл пароль и сброс пароля.
Я следовал вместе с Этот учебник yt
По какой -то причине, когда я отправляю запрос в почте в «Почтмену»: 8000/API/пользователи/Я получаю эту ошибку, и я понятия не имею, почему на данный момент, django.db.utils.databaseerror: Сохранить с Update_fields не повлиял на строки. Изменение user.save (self._db) на просто user.save (), та же ошибка.
Я обновил django до 5x. Django - единственный со значительным обновлением по сравнению с учебником, он использует django 4x.
Я переместил часть исходного кода модели в Managers.py на основе файлов на основе файлов На этом учебном пособии testdriven.io
Я смог запустить Python Manage.py Runserver без ошибок после этого.
Похоже, это не код, связанный с учебником, но что -то с пакетами Python ... < /p>
Вот ошибка из CLI: < /p>

Код: Выделить всё

[24/Jan/2025 16:40:07] "POST /api/users/ HTTP/1.1" 500 138392
Bad Request: /api/users/
[24/Jan/2025 17:05:47] "POST /api/users/ HTTP/1.1" 400 62
Internal Server Error: /api/users/
Traceback (most recent call last):
File "/home/da/projects/full_auth_api/full_auth/backend/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "/home/da/projects/full_auth_api/full_auth/backend/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/da/projects/full_auth_api/full_auth/backend/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
return view_func(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/da/projects/full_auth_api/full_auth/backend/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 124, in view
return self.dispatch(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/da/projects/full_auth_api/full_auth/backend/venv/lib/python3.12/site-packages/rest_framework/views.py", line 509, in dispatch
response = self.handle_exception(exc)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/da/projects/full_auth_api/full_auth/backend/venv/lib/python3.12/site-packages/rest_framework/views.py", line 469, in handle_exception
self.raise_uncaught_exception(exc)
File "/home/da/projects/full_auth_api/full_auth/backend/venv/lib/python3.12/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
raise exc

File "/home/da/projects/full_auth_api/full_auth/backend/venv/lib/python3.12/site-packages/rest_framework/views.py", line 506, in dispatch
response = handler(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/da/projects/full_auth_api/full_auth/backend/venv/lib/python3.12/site-packages/rest_framework/mixins.py", line 19, in create
self.perform_create(serializer)
File "/home/da/projects/full_auth_api/full_auth/backend/venv/lib/python3.12/site-packages/djoser/views.py", line 134, in perform_create
user = serializer.save(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/da/projects/full_auth_api/full_auth/backend/venv/lib/python3.12/site-packages/rest_framework/serializers.py", line 208, in save
self.instance = self.create(validated_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/da/projects/full_auth_api/full_auth/backend/venv/lib/python3.12/site-packages/djoser/serializers.py", line 40, in create
user = self.perform_create(validated_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/da/projects/full_auth_api/full_auth/backend/venv/lib/python3.12/site-packages/djoser/serializers.py", line 51, in perform_create
user.save(update_fields=["is_active"])
File "/home/da/projects/full_auth_api/full_auth/backend/venv/lib/python3.12/site-packages/django/contrib/auth/base_user.py", line 62, in save
super().save(*args, **kwargs)
File "/home/da/projects/full_auth_api/full_auth/backend/venv/lib/python3.12/site-packages/django/db/models/base.py", line 892, in save
self.save_base(
File "/home/da/projects/full_auth_api/full_auth/backend/venv/lib/python3.12/site-packages/django/db/models/base.py", line 998, in save_base
updated = self._save_table(
^^^^^^^^^^^^^^^^^
File "/home/da/projects/full_auth_api/full_auth/backend/venv/lib/python3.12/site-packages/django/db/models/base.py", line 1136, in _save_table
raise DatabaseError("Save with update_fields did not affect any rows.")
django.db.utils.DatabaseError: Save with update_fields did not affect any rows.
[24/Jan/2025 17:05:56] "POST /api/users/ HTTP/1.1"  500 138392
мои пользователи/models.py :

Код: Выделить всё

from django.contrib.postgres.functions import RandomUUID
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import (
AbstractBaseUser,
PermissionsMixin
)

from .managers import UserAccountManager
from django.utils.translation import gettext_lazy as _

class UserAccount(AbstractBaseUser, PermissionsMixin):
user_id = models.UUIDField(primary_key=True, default=RandomUUID, editable=False)
first_name = models.CharField(_('first_name'), max_length=255)
last_name = models.CharField(_('last_name'), max_length=255)
email = models.EmailField(unique=True, max_length=255)
title = models.CharField(_('title'), max_length=55, blank=True)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
date_joined = models.DateTimeField(default=timezone.now)

objects = UserAccountManager()

USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['first_name', 'last_name']

def __str__(self):
return self.email
мои пользователи/менеджеры.py :

Код: Выделить всё

from django.contrib.auth.models import BaseUserManager
from django.utils.translation import gettext_lazy as _
from django.db import models

class UserAccountManager(BaseUserManager):
def create_user(self, email, password=None, **kwargs):
"""
Creates and saves a User with the given email, date of
birth and password.
"""
if not email:
raise ValueError(_('Users must have an email address'))

email = self.normalize_email(email)
email = email.lower()

user = self.model(
email=email,
**kwargs
)

user.set_password(password)
user.save()
return user

def create_superuser(self, email, password=None, **kwargs):
"""
Creates and saves a superuser with the given email, date of
birth and password.
"""
user = self.create_user(
email,
password=password,
**kwargs
)

user.is_staff = True
user.is_superuser = True
user.save()
return user
В руководстве он рассказывает, как использовать файлы cookie ТОЛЬКО HTTP для управления токенами. Мы помещаем этот код в файл аутентификации.py
А это user/authentication.py:

Код: Выделить всё

from django.conf import settings
from rest_framework_simplejwt.authentication import JWTAuthentication

class CustomJWTAuthentication(JWTAuthentication):
def authenticate(self, request):
try:
header = self.get_header(request)

if header is None:
raw_token = request.COOKIES.get(settings.AUTH_COOKIE)
else:
raw_token = self.get_raw_token(header)

if raw_token is None:
return None

validated_token = self.get_validated_token(raw_token)

return self.get_user(validated_token), validated_token
except:
return None
Если кому-то понадобится дополнительный код, просто дайте мне знать. Опять же, я не понимаю, почему я получаю эту ошибку сервера 500, из-за которой данные не сохраняются в базе данных?

Подробнее здесь: https://stackoverflow.com/questions/793 ... -framework
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»