From da85e74860c6cb5cd8ffdd29dbc195ff8a5d5765 Mon Sep 17 00:00:00 2001 From: benjaminramey Date: Thu, 1 Apr 2021 20:36:29 -0500 Subject: [PATCH] Install and use djangorestframework --- apiv1/__init__.py | 0 apiv1/admin.py | 3 +++ apiv1/apps.py | 5 +++++ apiv1/migrations/__init__.py | 0 apiv1/models.py | 7 +++++++ apiv1/tests.py | 3 +++ apiv1/urls.py | 13 +++++++++++++ apiv1/views.py | 8 ++++++++ forgetmenot/settings.py | 10 ++++++++++ forgetmenot/urls.py | 3 ++- requirements.txt | Bin 126 -> 262 bytes 11 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 apiv1/__init__.py create mode 100644 apiv1/admin.py create mode 100644 apiv1/apps.py create mode 100644 apiv1/migrations/__init__.py create mode 100644 apiv1/models.py create mode 100644 apiv1/tests.py create mode 100644 apiv1/urls.py create mode 100644 apiv1/views.py diff --git a/apiv1/__init__.py b/apiv1/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apiv1/admin.py b/apiv1/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/apiv1/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/apiv1/apps.py b/apiv1/apps.py new file mode 100644 index 0000000..d64dab4 --- /dev/null +++ b/apiv1/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class Apiv1Config(AppConfig): + name = 'apiv1' diff --git a/apiv1/migrations/__init__.py b/apiv1/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apiv1/models.py b/apiv1/models.py new file mode 100644 index 0000000..5c39d4f --- /dev/null +++ b/apiv1/models.py @@ -0,0 +1,7 @@ +from rest_framework import serializers +from bookmarks.models import Bookmark + +class BookmarkSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = Bookmark + fields = ['title', 'url'] diff --git a/apiv1/tests.py b/apiv1/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/apiv1/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/apiv1/urls.py b/apiv1/urls.py new file mode 100644 index 0000000..cfc37c4 --- /dev/null +++ b/apiv1/urls.py @@ -0,0 +1,13 @@ +from django.urls import include, path +from rest_framework import routers +from . import views + +router = routers.DefaultRouter() +router.register(r'bookmarks', views.BookmarkViewSet) + +# Wire up our API using automatic URL routing. +# Additionally, we include login URLs for the browsable API. +urlpatterns = [ + path('', include(router.urls)), + path('api-auth/', include('rest_framework.urls', namespace='rest_framework')) +] \ No newline at end of file diff --git a/apiv1/views.py b/apiv1/views.py new file mode 100644 index 0000000..abe8aad --- /dev/null +++ b/apiv1/views.py @@ -0,0 +1,8 @@ +from rest_framework import viewsets + +from . import models +from bookmarks.models import Bookmark + +class BookmarkViewSet(viewsets.ModelViewSet): + queryset = Bookmark.objects.all() + serializer_class = models.BookmarkSerializer diff --git a/forgetmenot/settings.py b/forgetmenot/settings.py index cd97ab2..22fbeef 100644 --- a/forgetmenot/settings.py +++ b/forgetmenot/settings.py @@ -32,12 +32,14 @@ ALLOWED_HOSTS = [] INSTALLED_APPS = [ 'bookmarks.apps.BookmarksConfig', + 'apiv1.apps.Apiv1Config', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + 'rest_framework', ] MIDDLEWARE = [ @@ -121,3 +123,11 @@ USE_TZ = True # https://docs.djangoproject.com/en/3.1/howto/static-files/ STATIC_URL = '/static/' + +REST_FRAMEWORK = { + # Use Django's standard `django.contrib.auth` permissions, + # or allow read-only access for unauthenticated users. + 'DEFAULT_PERMISSION_CLASSES': [ + 'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly' + ] +} \ No newline at end of file diff --git a/forgetmenot/urls.py b/forgetmenot/urls.py index 250479a..95e11be 100644 --- a/forgetmenot/urls.py +++ b/forgetmenot/urls.py @@ -22,5 +22,6 @@ urlpatterns = [ path('', views.home, name='home'), path('bookmarks/', include('bookmarks.urls')), path('admin/', admin.site.urls), - path('accounts/', include('django.contrib.auth.urls')) + path('accounts/', include('django.contrib.auth.urls')), + path('api/v1/', include('apiv1.urls')), ] diff --git a/requirements.txt b/requirements.txt index b36fdc32b9ea59b3612300dc05520157c3529b6d..eecc6f20daf97bfd812be8ca33467fd22b3e1aee 100644 GIT binary patch literal 262 zcmZXP%?iRW5QM+8;G-yMEqLgQ1s!|*`!E7!XCnWJ2U%vdm;yV0(&|( zdMlP`D(1}Ca>R2LbNi{4h;>riLS1OT=gdP+A+fc%M&tfiON$~qk)Dfwqx=J>A|r2G phn*PHS}~)#lr5X&J@Ay