170 похожих чатов

У меня есть рабочий код, но я не уверен что

она написан красиво, слишком много повторяющихся строк. Есть идеи?

def book_list(request):
global genres
if request.GET.get('autor') == 'All authors':
authors = Autor.objects.all()
books = Book.objects.all()

if request.GET.get('genre') == 'All genres':
genres = Genre.objects.all()

if request.GET.get('sorting') == 'Starting with dear':
books = Book.objects.filter().order_by('-price')
elif request.GET.get('sorting') == 'Starting from cheap':
books = Book.objects.filter().order_by('price')
elif request.GET.get('sorting') == 'From A to Z':
books = Book.objects.filter().order_by('title')
elif request.GET.get('sorting') == 'From Z to A':
books = Book.objects.filter().order_by('-title')

elif request.GET.get('genre'):
genre_title = request.GET.get('genre')
genre = Genre.objects.get(title=genre_title)
genres = Genre.objects.all()
books = Book.objects.filter(genre=genre)

if request.GET.get('sorting') == 'Starting with dear':
books = Book.objects.filter(genre=genre).order_by('-price')
elif request.GET.get('sorting') == 'Starting from cheap':
books = Book.objects.filter(genre=genre).order_by('price')
elif request.GET.get('sorting') == 'From A to Z':
books = Book.objects.filter(genre=genre).order_by('title')
elif request.GET.get('sorting') == 'From Z to A':
books = Book.objects.filter(genre=genre).order_by('-title')


elif request.GET.get('autor'):
autor_id = request.GET.get('autor')
autor = Autor.objects.get(id=autor_id)
authors = Autor.objects.all()
books = Book.objects.filter(autor=autor)

if request.GET.get('genre') == 'All genres':
genres = Genre.objects.all()

if request.GET.get('sorting') == 'Starting with dear':
books = Book.objects.filter(autor=autor).order_by('-price')
elif request.GET.get('sorting') == 'Starting from cheap':
books = Book.objects.filter(autor=autor).order_by('price')
elif request.GET.get('sorting') == 'From A to Z':
books = Book.objects.filter(autor=autor).order_by('title')
elif request.GET.get('sorting') == 'From Z to A':
books = Book.objects.filter(autor=autor).order_by('-title')

elif request.GET.get('genre'):
genre_title = request.GET.get('genre')
genre = Genre.objects.get(title=genre_title)
genres = Genre.objects.all()
books = Book.objects.filter(autor=autor,genre=genre)

if request.GET.get('sorting') == 'Starting with dear':
books = Book.objects.filter(autor=autor, genre=genre).order_by('-price')
elif request.GET.get('sorting') == 'Starting from cheap':
books = Book.objects.filter(autor=autor, genre=genre).order_by('price')
elif request.GET.get('sorting') == 'From A to Z':
books = Book.objects.filter(autor=autor, genre=genre).order_by('title')
elif request.GET.get('sorting') == 'From Z to A':
books = Book.objects.filter(autor=autor, genre=genre).order_by('-title')

else:
authors = Autor.objects.all()
books = Book.objects.all()
genres = Genre.objects.all()

return render(request, 'book_list.html', context={'books': books, 'authors': authors, 'genres': genres})

3 ответов

9 просмотров

Ты который день в чатике? dpaste.org еще не в закладках? Ну уже и про добрых модераторов вроде предупреждал, у них наверное тоже предел терпения есть ;)

Непонятно зачем global genres, какому уровню соответствует последний else, если первому, то не дублируется ли чего? Может все же сначала достать переменные из запроса, а потом проверять? Опять же из-за неудобства чтения здесь не понятно, но кажется что неправильно построена логика ифов. Ну и проверяй все это с невалидными значениями, есть подозрение что посыпется

Вот автор по id отрабатывает? Там вроде инт со строкой сравнивается, вангую проблему

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
49
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
Linus
18
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
@HemulGM Параметры у AddStream поменялись? Несостыковка какая-то
Катерина Свиридова
12
Подскажите, есть какие-то события создания/уничтожения у TFrame по типу TForm (OnCreate и OnClose/OnDestroy) ? Как отловить создание TFrame и "перед" уничтожением. На Tframe р...
Денис
8
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
а чем хуже?
Alexey Kulakov
10
Карта сайта