我目前正在开发一个完全分离的博客Web应用程序,其中Django Rest Framework服务器通过REST API端点发送JSON数据。
我的演示文稿完全由前端react javascript客户端处理。
当前,我正在使用通用DRF视图-generics.ListCreateAPIView和generics.RetrieveUpdateDestroyAPIView。
我没有问题可以获取数据库模型实例的列表(博客文章实例。我遇到的麻烦是如何通过html表单发送POST数据以在后端API服务器中创建新的模型实例。我没有使用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()),
]