api zugriff für posts

This commit is contained in:
2020-05-09 15:02:35 +00:00
parent 27e23afd93
commit 1c502d7f48
5 changed files with 38 additions and 7 deletions

View File

@@ -41,7 +41,8 @@ INSTALLED_APPS = [
'django.contrib.staticfiles',
'taggit',
'ckeditor',
'ckeditor_uploader'
'ckeditor_uploader',
'rest_framework'
]
MIDDLEWARE = [

View File

@@ -18,10 +18,17 @@ from django.urls import path, include
from django.conf.urls.static import static
from django.conf import settings
from . import views
from posts.views import PostViewSet
from rest_framework import routers
router = routers.DefaultRouter()
router.register(r'posts', PostViewSet)
urlpatterns = [
path('posts/',include('posts.urls')),
path('admin/', admin.site.urls),
path('', views.index, name='home'),
path('index.html', views.index, name='home'),
path('ckeditor/', include('ckeditor_uploader.urls'))
path('ckeditor/', include('ckeditor_uploader.urls')),
path('api/', include(router.urls))
]+static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

View File

@@ -2,10 +2,13 @@ from django.db import models
from django.contrib.auth.models import User
from taggit.managers import TaggableManager
from django.utils.text import slugify
from django.urls import reverse
#from ckeditor_uploader import RichTextUploadingField
import django
import uuid
import re
from rest_framework import serializers
# Create your models here.
class Post(models.Model):
@@ -42,6 +45,7 @@ class Post(models.Model):
date_created=models.DateTimeField(auto_now_add=True)
def get_tags(self):
return ",".join(self.tags.names())
@@ -53,7 +57,9 @@ class Post(models.Model):
def key(self):
return self.slug or self.id
@property
def url(self):
return reverse('posts.show', kwargs={"id":self.slug})
def save(self, *args, **kwargs):
if self.id is None and (self.slug is None or self.slug ==""):
self.slug=slugify(self.title)
@@ -65,6 +71,10 @@ class Post(models.Model):
class PostSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Post
fields = ['slug','title', 'body','url', 'legacy_id']

View File

@@ -2,8 +2,10 @@ from django.shortcuts import render
from django.http import HttpResponse
from collections import deque
from .models import Post
from .models import Post, PostSerializer
from taggit.models import Tag
from rest_framework import viewsets
from rest_framework import permissions
# Create your views here.
def index(request):
@@ -18,3 +20,13 @@ def show(request,id=None):
elif id != ""and not id is None:
p=Post.objects.get(slug=(id))
return render(request, 'posts/show.html', {"post":p})
class PostViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
queryset = Post.objects.all().order_by('-public_date')
serializer_class = PostSerializer
permission_classes = [permissions.IsAuthenticated]
lookup_field='slug'

View File

@@ -2,3 +2,4 @@ django
django-taggit
django-ckeditor
Pillow
djangorestframework