簡體   English   中英

如何在Django Rest框架中添加評論框和發布表單

[英]How to add comment box and post form to django rest framework

我按照django rest框架教程創建了一個網站( http://192.241.153.25:8000

我已經完成了登錄部分和帖子的連接,但是我不知道如何為單個帖子放置一個發布表單和評論框。

這是我嘗試過的

html

<form id="post_form" method="post" action="">
<input type="text" name="title" placeholder="Username">
<input type="text" name="content" placeholder="content">
<button class="ladda-button button-primary login_button" ng-click="vm.submit()"/><span class="ladda-label">submit</span></button>
</form>

jQuery的

  $('#post_form').on('submit', function(e) { e.preventDefault()

  $.ajax({
    type:"POST",
    url: '/api/posts/create/',
    data:$('#post_form').serialize(),
    error: function(response){
      alert('Not authorized.');  // Or something in a message DIV
    },
    success: function(response){
      console.log(response);
      $('.login_bar').html(response)
      $('.login_bar').html(response)
      $('#logout_form').toggleClass(show)
    // do something with response
 }
});

});

這是我的API。

http://192.241.153.25:8000/api/posts/create/

有人可以幫我嗎?

看這個例子:

models.py

class Post(models.Model):
    title = models.CharField(max_length=500)
    body = models.TextField()

    def __str__(self):
        return self.title


class Comment(models.Model):
    post = models.ForeignKey(Post)
    text = models.TextField()
    author = models.CharField(max_length=100)

    def __str__(self):
        return "[%s] %s" % (self.author, self.text)

serializers.py

from .models import Post, Comment
from rest_framework import serializers


class CommentSerializer(serializers.ModelSerializer):
    class Meta:
        model = Comment
        fields = ('text', 'author', 'post')


class PostSerializer(serializers.ModelSerializer):
    class Meta:
        model = Post
        fields = ('title', 'body', 'comment_set')

views.py

from rest_framework import viewsets
from rest_framework.permissions import AllowAny
from .models import Post, Comment
from .serializers import CommentSerializer, PostSerializer


class PostViewSet(viewsets.ModelViewSet):
    serializer_class = PostSerializer
    permission_classes = [AllowAny]
    queryset = Post.objects.all()


class CommentViewSet(viewsets.ModelViewSet):
    serializer_class = CommentSerializer
    permission_classes = [AllowAny]
    queryset = Comment.objects.all()

urls.py

from django.conf.urls import url, include
from rest_framework import routers
from .views import PostViewSet, CommentViewSet

router = routers.DefaultRouter()
router.register(r'posts', PostViewSet)
router.register(r'comments', CommentViewSet)

urlpatterns = [
    url(r'^', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

將JSON格式的POST請求發送到http://127.0.0.1/comments/ ,內容如下

{"author":"Jerry", "text": "Nice post!", "post": 1}

在這種情況下,為ID = 1的帖子創建新評論

這可能對您有用:views.py:-

def adComment(request):
    print request
    if request.method == 'POST':
        form = CommentForm(request.POST) #Validate your data with form. 
        if form.is_valid():
            instance = form.save(commit=False)
            instance.title = form.cleaned_data['username']
            instance.comments = form.cleaned_data['content']
            instance.save() #Will save your data if valid.
            data = {'success':True,'msg':"Store comment's data successfully"}
            return Response(data)

    else:
        data = {'success':False,'msg':'Error in storing comments'}
        return Response(data)

表格

from django.forms import ModelForm
from models import commentData


class CommentForm(ModelForm):
    class Meta:
        model = commentData #Your model name created to store comment's data
        fields = [
                  "username", 
                  "content",

                  ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM