Django rest framework api_view vs normal view

Я искал всюду, чтобы найти достойное объяснение этому, и все они заканчиваютсяКогда вы используете декоратор @api_view, а не классный взгляд с приложением django rest framework

  • Просмотры в Python3.1?
  • Общий вид 'archive_year' создает пустую страницу
  • Я хочу кнопку на моем веб-сайте, которая выполнит скрипт python
  • Сохранение вида numpy при травлении
  • "Неизвестный столбец" user_id "ошибка в представлении django
  • Проверьте, существует ли объект
  • Что является более эффективным способом передачи переменных из шаблона в View в Django?
  • 2 Solutions collect form web for “Django rest framework api_view vs normal view”

    REST Framework в стороне, это тот же вопрос, когда использовать общие взгляды на основе класса и функции в целом. CBVs в Django являются удивительными, гибкими и сохраняют множество шаблонов кода, но иногда это просто быстрее, проще и понятнее использовать функцию, основанную на представлении. Подумайте об этом с тем же подходом, что и вы, чтобы написать нормальный вид в Django. REST Framework просто поддерживает оба метода написания кода представления, как он вводится в учебнике .

    Вообще-то идите с CBV, если это не мешает вам, а затем просто сохраните его с помощью функции, основанной на представлении, и декоратора. В Django и REST Framework логика типичных вещей, таких как списки, разбиение на страницы и CRUD-операции, уже написана и легко расширяется в виде классов и mixins. Если ваша логика представления делает что-то заметно другое, может быть целесообразным представление, основанное на функциях. И, конечно же, вы можете использовать оба подхода в своем приложении.

    Лично я использую базовый класс APIView или декоратор @api_view только тогда, когда мне нужно сделать что-то очень специфичное / обычай. Например, чтобы показать список URL-адресов конечной точки, агрегировать данные из разных моделей определенным образом и так далее.

    Всякий раз, когда я общаюсь с обычным списком, создаю, обновляю и удаляю операции, я использую другие классы (Retrieve, Create, Update and Destroy Views или Mixins).

    Пример использования декоратора @api_view для составления списка всех конечных точек моего приложения:

     from django.core.urlresolvers import NoReverseMatch from rest_framework.decorators import api_view from rest_framework.response import Response from rest_framework.reverse import reverse from .urls import urlpatterns @api_view(('GET',)) def root_endpoint(request, format=None): """ List of all the available resources of this RESTful API. """ endpoints = [] # loop over url modules for urlmodule in urlpatterns: # is it a urlconf module? try: urlmodule.urlconf_module is_urlconf_module = True except AttributeError: is_urlconf_module = False # if url is really a urlmodule if is_urlconf_module: # loop over urls of that module for url in urlmodule.urlconf_module.urlpatterns: # TODO: configurable skip url in settings # skip api-docs url if url.name in ['django.swagger.resources.view']: continue # try adding url to list of urls to show try: endpoints.append({ 'name': url.name.replace('api_', ''), 'url': reverse(url.name, request=request, format=format) }) # urls of object details will fail silently (eg: /nodes/<slug>/) except NoReverseMatch: pass return Response(endpoints) 

    Этот код находится на github .

    Interesting Posts
    Python - лучший язык программирования в мире.