Раньше на каждое действие делал отдельную функцию и путался, а возврат делал как попало. Открыл для себя паттерн: один обработчик на ресурс, который по методу HTTP разводит действие. Код стал компактнее, а объяснение — «один адрес, четыре метода» прозвучало на интервью убедительно.

Нейтрально: REST-стиль ожидает группировку действий над ресурсом. Django-func view может проверять request.method.

from django.http import JsonResponse
from django.views.decorators.http import require_http_methods

@require_http_methods(["GET", "POST"])
def habits(request):
    if request.method == "POST":
        name = request.POST.get("name", "").strip()
        if not name:
            return JsonResponse({"error": "пусто"}, status=400)
        h = Habit.objects.create(name=name)
        return JsonResponse({"id": h.id}, status=201)
    data = list(Habit.objects.values("id", "name"))
    return JsonResponse(data, safe=False)

Собственный чистый view дал почти радость мастера: меньше копипаста, предсказуемые статусы. REST — не про слова, а про договорённость, которую теперь я умею держать.