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', 'django.contrib.staticfiles',
'taggit', 'taggit',
'ckeditor', 'ckeditor',
'ckeditor_uploader' 'ckeditor_uploader',
'rest_framework'
] ]
MIDDLEWARE = [ MIDDLEWARE = [

View File

@@ -18,10 +18,17 @@ from django.urls import path, include
from django.conf.urls.static import static from django.conf.urls.static import static
from django.conf import settings from django.conf import settings
from . import views from . import views
from posts.views import PostViewSet
from rest_framework import routers
router = routers.DefaultRouter()
router.register(r'posts', PostViewSet)
urlpatterns = [ urlpatterns = [
path('posts/',include('posts.urls')), path('posts/',include('posts.urls')),
path('admin/', admin.site.urls), path('admin/', admin.site.urls),
path('', views.index, name='home'), path('', views.index, name='home'),
path('index.html', 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) ]+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 django.contrib.auth.models import User
from taggit.managers import TaggableManager from taggit.managers import TaggableManager
from django.utils.text import slugify from django.utils.text import slugify
from django.urls import reverse
#from ckeditor_uploader import RichTextUploadingField #from ckeditor_uploader import RichTextUploadingField
import django import django
import uuid import uuid
import re import re
from rest_framework import serializers
# Create your models here. # Create your models here.
class Post(models.Model): class Post(models.Model):
@@ -40,7 +43,8 @@ class Post(models.Model):
# TimeStamps # TimeStamps
date_modified=models.DateTimeField(auto_now=True) date_modified=models.DateTimeField(auto_now=True)
date_created=models.DateTimeField(auto_now_add=True) date_created=models.DateTimeField(auto_now_add=True)
def get_tags(self): def get_tags(self):
return ",".join(self.tags.names()) return ",".join(self.tags.names())
@@ -53,7 +57,9 @@ class Post(models.Model):
def key(self): def key(self):
return self.slug or self.id return self.slug or self.id
@property
def url(self):
return reverse('posts.show', kwargs={"id":self.slug})
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
if self.id is None and (self.slug is None or self.slug ==""): if self.id is None and (self.slug is None or self.slug ==""):
self.slug=slugify(self.title) 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 django.http import HttpResponse
from collections import deque from collections import deque
from .models import Post from .models import Post, PostSerializer
from taggit.models import Tag from taggit.models import Tag
from rest_framework import viewsets
from rest_framework import permissions
# Create your views here. # Create your views here.
def index(request): def index(request):
@@ -18,3 +20,13 @@ def show(request,id=None):
elif id != ""and not id is None: elif id != ""and not id is None:
p=Post.objects.get(slug=(id)) p=Post.objects.get(slug=(id))
return render(request, 'posts/show.html', {"post":p}) 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

@@ -1,4 +1,5 @@
django django
django-taggit django-taggit
django-ckeditor django-ckeditor
Pillow Pillow
djangorestframework