Giter Site home page Giter Site logo

api_yamdb's People

Contributors

4u3o avatar bbbmmm avatar malyshevadv avatar

Watchers

 avatar  avatar

api_yamdb's Issues

api/views.py - поправить if serializer.is_valid() в get_token

https://github.com/malyshevadv/api_yamdb/blob/master/api_yamdb/api/views.py

@api_view(['POST']) 
@permission_classes([AllowAny]) 
def get_token(request): 
    """Получение JWT-токена. 
 
    Если полученный код подтверждения валиден - отправляет юзеру JWT-токен. 
    """ 
    serializer = TokenSerializer(data=request.data) 
 
    if serializer.is_valid():

Тут тоже стоит добавить исключение и проверять обратное условие

api/views.py - перенести email в настройки

https://github.com/malyshevadv/api_yamdb/blob/master/api_yamdb/api/views.py

def send_confirmation(user):
"""Отправляет письмо пользователю."""
confirmation_code = default_token_generator.make_token(user)

send_mail( 
    'Email confirmation', 
    f'Ваш код для подтверждения почты: {confirmation_code}', 
    '[email protected]', 

Стоит этот email ([email protected]) задать в настройках проекта

api/views.py - убрать if

https://github.com/malyshevadv/api_yamdb/blob/master/api_yamdb/api/views.py

@api_view(['POST']) 
@permission_classes([AllowAny]) 
def get_token(request): 
    """Получение JWT-токена. 
 
    Если полученный код подтверждения валиден - отправляет юзеру JWT-токен. 
    """ 
    serializer = TokenSerializer(data=request.data) 
 
    if serializer.is_valid(raise_exception=True): 

К строке if serializer.is_valid(raise_exception=True):
Можно не использовать if, просто пишем эту строку и будем знать, что если что-то не так - то выбросится исключение, если нет - идём дальше, всё норм
https://www.django-rest-framework.org/api-guide/exceptions/#validationerror

api/views.py - поправить serializer.is_valid в def signup(request):

https://github.com/malyshevadv/api_yamdb/blob/master/api_yamdb/api/views.py

api_view(['POST']) 
@permission_classes([AllowAny]) 
def signup(request): 
    """Регистрация пользователя. 
 
    Создает нового пользователя, отправляет на указанный email код 
    подтверждения. 
    Если пользователь с полученными username и email уже существует - 
    отправляет ему код подтверждения. 
    """ 
    user = User.objects.filter( 
        username=request.data.get('username'), 
        email=request.data.get('email') 
    ).first() 
    if user: 
        send_confirmation(user) 
        return Response('Мы отправили код подтверждения на вашу почту.', 
                        status=status.HTTP_200_OK) 
    else: 
       serializer = SignUpSerializer(data=request.data) 
 
        if serializer.is_valid(): 

для if serializer.is_valid():
Вот тут лучше сделать так:
https://www.django-rest-framework.org/api-guide/exceptions/#validationerror

api/views.py - изменить метод запрета ненужных методов для Categry и Genre

https://github.com/malyshevadv/api_yamdb/blob/master/api_yamdb/api/views.py

class CategoryViewSet(ModelViewSet): 
    serializer_class = CategorySerializer 
    queryset = Category.objects.all() 
    permission_classes = [ 
        (IsAuthenticated & IsAdmin) | ReadOnly 
    ] 
    pagination_class = PageNumberPagination 
    filter_backends = [SearchFilter] 
    search_fields = ['name', ] 
 
    def retrieve(self, request, **kwargs): 

А может другим способом запретим ненужные методы? Миксинами, например :)

class GenreViewSet(ModelViewSet): 
    serializer_class = GenreSerializer 
    queryset = Genre.objects.all() 
    permission_classes = [ 
        (IsAuthenticated & IsAdmin) | ReadOnly 
    ] 
    pagination_class = PageNumberPagination 
    filter_backends = [SearchFilter] 
    search_fields = ['name', ] 
 
    def retrieve(self, request, **kwargs): 

И тут)

class TitleViewSet(ModelViewSet): 
    queryset = Title.objects.all().annotate(rating=Avg('reviews__score')) 

Красота!
Отлично

api/views.py - убрать else

https://github.com/malyshevadv/api_yamdb/blob/master/api_yamdb/api/views.py

def signup(request): 
    """Регистрация пользователя. 
 
    Создает нового пользователя, отправляет на указанный email код 
    подтверждения. 
    Если пользователь с полученными username и email уже существует - 
    отправляет ему код подтверждения. 
    """ 
    user = User.objects.filter( 
        username=request.data.get('username'), 
        email=request.data.get('email') 
    ).first() 
 
    if user: 
        send_confirmation(user) 
        return Response('Мы отправили код подтверждения на вашу почту.', 
                        status=status.HTTP_200_OK) 
    else: 

После return не нужен else

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.