Django - считается ли нормальным хранить функцию во views.py среди View классов?
Всем привет, хочу узнать мнение людей с опытом: есть 9 классов и среди них затерялась одна функция, считается ли нормальным хранить эту функцию во views.py среди based Views классов? Или стоит ее вынести в другой файл, например в services.py?
Вот код функции (она работает с ajax запросом)
def add_favourite(request):
if request.POST.get('action') == 'post':
id = int(request.POST.get('advertisementId'))
advertisement = get_object_or_404(Advertisement, id=id)
if advertisement.favourites.filter(id=request.user.id).exists():
advertisement.favourites.remove(request.user)
else:
advertisement.favourites.add(request.user)
total_favourites = Advertisement.objects.get(id=id).total_favourites
return JsonResponse({'total_favourites': total_favourites})
Или может эту функцию можно переделать в class based Views ?
Буду рад любому совету.
Ответы (1 шт):
Автор решения: alex
→ Ссылка
по хорошему, раз у вас везде CBV, то и эту вьюху надо тоже в CBV переделать. И сделать это очень просто
from django.что-то.там import View
from django.что-то.там import csrf_exempt
from django.utils.decorators import method_decorator
@method_decorator(csrf_exempt, name='dispatch')
class AddFavourite(View):
def post(self, request):
id = int(request.POST.get('advertisementId'))
advertisement = get_object_or_404(Advertisement, id=id)
if advertisement.favourites.filter(id=request.user.id).exists():
advertisement.favourites.remove(request.user)
else:
advertisement.favourites.add(request.user)
total_favourites = Advertisement.objects.get(id=id).total_favourites
return JsonResponse({'total_favourites': total_favourites})