Skip to content

Instantly share code, notes, and snippets.

View akshar-raaj's full-sized avatar
💭
Learning something new everyday!

Akshar Raaj akshar-raaj

💭
Learning something new everyday!
View GitHub Profile
from . import apiviews
path('questions/', apiviews.questions_view, name='questions_view')
# mysite/urls.py
path('api/polls/', include('polls.urls'))
path('questions/<int:question_id>/result/', apiviews.question_result_view, name='question_result_view')
@api_view(['GET'])
def question_result_view(request, question_id):
question = get_object_or_404(Question, pk=question_id)
serializer = QuestionResultPageSerializer(question)
return Response(serializer.data)
@akshar-raaj
akshar-raaj / gist:d04e058aa8f35da9660d1cfe76c643ff
Created May 7, 2019 11:10
ChoiceSerializerWithVotes and QuestionResultPageSerializer
class ChoiceSerializerWithVotes(ChoiceSerializer):
class Meta(ChoiceSerializer.Meta):
fields = ChoiceSerializer.Meta.fields + ('votes',)
class QuestionResultPageSerializer(QuestionListPageSerializer):
choices = ChoiceSerializerWithVotes(many=True, read_only=True)
@api_view(['PATCH'])
def vote_view(request, question_id):
question = get_object_or_404(Question, pk=question_id)
serializer = VoteSerializer(data=request.data)
if serializer.is_valid():
choice = get_object_or_404(Choice, pk=serializer.validated_data['choice_id'], question=question)
choice.votes += 1
choice.save()
return Response("Voted")
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
path('questions/<int:question_id>/vote/', apiviews.vote_view, name='vote_view'),
class VoteSerializer(serializers.Serializer):
choice_id = serializers.IntegerField()
@api_view(['GET', 'POST'])
def questions_view(request):
if request.method == 'GET':
questions = Question.objects.all()
serializer = QuestionListPageSerializer(questions, many=True)
return Response(serializer.data)
elif request.method == 'POST':
serializer = QuestionSerializer(data=request.data)
if serializer.is_valid():
question = serializer.save()