В настоящее время я работаю над полностью отделенным веб-приложением для ведения блогов, в котором сервер Django Rest Framework отправляет данные JSON через конечные точки API REST.
Моя презентация полностью обрабатывается интерфейсным клиентом Javascript реагирования.
В настоящее время я использую общие представления DRF - generics.ListCreateAPIView & generics.RetrieveUpdateDestroyAPIView.
У меня нет проблем с получением списка экземпляров модели базы данных (экземпляров блога). Проблема, с которой я сталкиваюсь, заключается в том, как отправлять данные POST через html-форму для создания нового экземпляра модели на бэкэнд-сервере API. IЯ вообще не использую формы Django, формы обрабатываются полностью во внешнем интерфейсе. Django - это просто сервер REST API.
# models.py
from django.db import models
# Create your models here.
class Post(models.Model):
title = models.CharField(max_length=50)
content = models.CharField(max_length=500)
timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
updated = models.DateTimeField(auto_now=True, auto_now_add=False)
class Meta:
ordering = ["-timestamp", "-updated"]
def get_model_fields(self):
return self._meta.get_fields()
def __str__(self):
return self.title
from rest_framework import serializers
from blog.models import Post
# serializers.py
class PostSerializer(serializers.ModelSerializer):
timestamp = serializers.DateTimeField(read_only=True, format="%Y-
%m-%d")
updated = serializers.DateTimeField(read_only=True, format="%Y-%m-
%d")
class Meta:
fields = (
'id',
'title',
'content',
'timestamp',
'updated',
)
model = Post
# views.py
from rest_framework import generics
from blog.models import Post
from blog.serializers import PostSerializer
# Create your views here.
class ListPost(generics.ListCreateAPIView):
queryset = Post.objects.all()
serializer_class = PostSerializer
class DetailPost(generics.RetrieveUpdateDestroyAPIView):
queryset = Post.objects.all()
serializer_class = PostSerializer
# urls.py
from django.conf.urls import url
from blog import views
urlpatterns = [
url(r'^$', views.ListPost.as_view()),
url(r'^(?P<pk>\d+)/$', views.DetailPost.as_view()),
]