@Slava04

Как исправить ошибку в коде python?

def post(request, username: str, post_id: int): 
        author = User.objects.get(username=username) 
        post = get_object_or_404( 
            Post, 
            pk=post_id, 

            author=author, 
        ) 
        if request.user != author: 
            return redirect('post', username=username, post_id=post_id) 
        form = PostForm(request.POST, instance=post) 
        if form.is_valid() and author == request.user: 
            form.save() 
            return redirect('post', username=username, post_id=post_id) 
        return render(request, 'posts/new_post.html', { 
            'post': post, 
            'form': form, 
        })


Есть вот такая часть кода. И есть вот такое замечание к строчке author=author "Пост стоит дополнительно фильтровать по username автора для верности. Выборка автора выше не нужна, т.к. автор есть в посте."
Подскажите как это сделать
  • Вопрос задан
  • 953 просмотра
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka
Токсичный шарпист
Ну видимо надо сделать что-то типа
if post.author != username
А вообще тут бы в коде прибраться.

1. Именование функции. Что такое post()? Возможно, имели в виду post_что-то там?
2. Именование параметров. Что такое username? Возможно, имели в виду author_name? Имеется смысл засовывать туда id автора или вообще целый объект
3. Нет аннотации типа у post
4. Лишний перевод строки в get_object_or_404 (+ странное имя у функции)
5. Именование PostForm не совпадает по стилю с другими функциями.
6. У вас в двух местах есть проверки author != request.user и autor == request.user. Вторая из них не нужна, тк будет всегда true
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы