она написан красиво, слишком много повторяющихся строк. Есть идеи?
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})
Ты который день в чатике? dpaste.org еще не в закладках? Ну уже и про добрых модераторов вроде предупреждал, у них наверное тоже предел терпения есть ;)
Непонятно зачем global genres, какому уровню соответствует последний else, если первому, то не дублируется ли чего? Может все же сначала достать переменные из запроса, а потом проверять? Опять же из-за неудобства чтения здесь не понятно, но кажется что неправильно построена логика ифов. Ну и проверяй все это с невалидными значениями, есть подозрение что посыпется
Вот автор по id отрабатывает? Там вроде инт со строкой сравнивается, вангую проблему
Обсуждают сегодня