发布请求Django REST框架

巴拉希K

这是我的views.py

from rest_framework import generics, permissions
from .models import Survey,Response
from .serialize import SurveySerializer,ResponseSerializer,SurveySerializerQuestion
from rest_framework.decorators import api_view

class SurveyList(generics.ListAPIView):
    model = Survey
    serializer_class = SurveySerializerQuestion

    def get_queryset(self):

        return Survey.objects.all()


class SurveyListByID(generics.ListAPIView):
    model = Survey
    serializer_class = SurveySerializer

    def get_queryset(self):
        survey_id = self.kwargs['survey_id']
        return Survey.objects.filter(survey_id = survey_id)


class ResponseList(generics.ListAPIView):

    model = Response
    serializer_class = ResponseSerializer

    def get_queryset(self):
        survey_id = self.kwargs['survey_id']
        return Response.objects.filter(survey_id = survey_id)

这是我的urls.py

from django.conf.urls import patterns, include, url
from views import SurveyList,SurveyListByID,ResponseList
urlpatterns = patterns('',
url(r'^surveys/$', SurveyList.as_view(),name ='survey-list') ,
url(r'^surveys/(?P<survey_id>[0-9]+)/$', SurveyListByID.as_view(),name ='survey-list-by-id'), 
url(r'^response/(?P<survey_id>[0-9]+)/$', ResponseList.as_view(),name ='response-list'), 
)

这是serialize.py

from rest_framework import serializers
from .models import Employee,Survey,EmployeeSurvey,Response

class SurveySerializer(serializers.ModelSerializer):

    class Meta:
        model = Survey
        fields = ('survey_id', 'question', 'choice1','choice2')


class SurveySerializerQuestion(serializers.ModelSerializer):

    class Meta:
        model = Survey
        fields = ('survey_id', 'question')

class ResponseSerializer(serializers.ModelSerializer):
    class Meta:
        model = Response
        fields = ('id','survey_id','choice1_count','choice2_count')

最后这是models.py

import re
from django.db import models
from django.core.validators import RegexValidator
from django.core.exceptions import ValidationError

def alphanumeric_test(val):
    if not re.match('^[0-9a-zA-Z]*$', val):
        raise ValidationError('Only alphanumeric characters are allowed.')

def alphabetic_test(val):
    if not re.match('^[a-zA-Z]*$', val):
        raise ValidationError('Please enter alphabetic value.')

class Survey(models.Model):
    survey_id = models.AutoField(primary_key=True)
    question = models.CharField(max_length = 300)
    choice1 = models.CharField(max_length = 100)
    choice2 = models.CharField(max_length = 100)
    def __unicode__(self):              
        return u'%s %s %s' % (self.question,self.choice1,self.choice2)


class Response(models.Model):
        survey_id = models.ForeignKey(Survey, blank=True, null=True, on_delete=models.SET_NULL)
        choice1_count = models.IntegerField()
        choice2_count = models.IntegerField()
        def __unicode__(self):              
    return u'%s %s %s' % (self.survey_id,self.choice1_count,self.choice2_count)

现在,我该如何在没有UI且使用Django Rest浏览器的Django Rest中编写POST请求。我想发出POST请求以使用与获取get一样的URL来捕获调查中的选择,这可能吗?

极客

在views.py中添加一个新的类,如下所示:

class SurveyAPIView(APIView):

    def post(self, request, format=None):
        serializer = SurveySerializer(request.data)
        if serializer.is_valid():
            instance = serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
    else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

并在urls.py中添加新行,例如:

url(r'^create-survey/$', SurveyAPIView.as_view(),name ='create-survey') ,

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用django rest框架的跨站点发布请求

来自分类Dev

Ajax 请求 django rest 框架

来自分类Dev

Django Rest 框架请求验证

来自分类Dev

Django Rest框架无法发布数据

来自分类Dev

Django REST框架JSON数组发布

来自分类Dev

使用Django Rest框架在发布请求时获取自定义标头

来自分类Dev

如何使用相关的序列化器Django Rest框架进行发布请求

来自分类Dev

如何在Django Rest框架中对嵌套的Serailizer执行发布请求

来自分类Dev

Django REST框架请求数据

来自分类Dev

Django rest框架-PrimaryKeyRelatedField

来自分类Dev

Django Rest框架表格

来自分类Dev

Django Rest框架关系

来自分类Dev

Django Rest框架assertionError

来自分类Dev

Django rest框架ModelSerializer

来自分类Dev

Django rest框架-PrimaryKeyRelatedField

来自分类Dev

Django Rest框架表格

来自分类Dev

Django Rest 框架 - NoReverseMatch

来自分类Dev

Django Rest 框架:MultipleObjectsReturned

来自分类Dev

在REST框架中使用Django消息框架

来自分类Dev

如何在Django Rest框架中发布对象数组?

来自分类Dev

Django rest 框架:在多对多项目上发布

来自分类Dev

如何从django rest框架请求获取django HttpRequest?

来自分类Dev

Django Rest Framework调试发布和放置请求

来自分类Dev

Django Rest Framework序列化在发布请求时失败

来自分类Dev

django.utils.datastructures.MultiValueDictKeyError REST API 发布请求

来自分类Dev

Django REST框架+ Django REST Swagger + ImageField

来自分类Dev

调整Django Rest框架模板

来自分类Dev

django rest框架用户注册

来自分类Dev

Django REST框架Swagger 2.0