Убираем дублирование с помощью тегов
у меня появился вопрос: есть код(вьюха), я создал теги для него, как при помощи тегов убрать дублирование?
Теги:
from django import template
from recipes.models import Follow, Recipe
register = template.Library()
@register.filter(name='extend_context')
def extend_context(context, user):
context['purchase_list'] = Recipe.objects.filter(purchase_by=user)
context['favorites'] = Recipe.objects.filter(favorite_by=user)
return context
@register.filter(name='add_subscription_status')
def add_subscription_status(context, user, author):
context['is_subscribed'] = Follow.objects.filter(
user=user, author=author
).exists()
return context
Код вьюхи:
@require_GET
def recipe_detail(request, recipe_id):
recipe = get_object_or_404(Recipe, id=recipe_id)
context = {
'recipe': recipe,
}
user = request.user
if user.is_authenticated:
add_subscription_status(context, user, recipe.author) - дублирование
extend_context(context, user) - дублирование
return render(request, 'recipes/recipe_detail.html', context)
@require_GET
def profile(request, user_id):
author = get_object_or_404(User, id=user_id)
tags = request.GET.getlist('tag')
recipe_list = tag_filter(Recipe, tags)
paginator = Paginator(recipe_list.filter(author=author), PAGINATE_BY)
page_number = request.GET.get('page')
page = paginator.get_page(page_number)
context = {
'tags': Tag.objects.all(),
'author': author,
'page': page,
'paginator': paginator
}
user = request.user
if user.is_authenticated:
add_subscription_status(context, user, author) - дублирование
extend_context(context, user) - дублирование
return render(request, 'recipes/profile.html', context)