创建题目标签相关的 api

This commit is contained in:
virusdefender
2015-08-10 17:59:39 +08:00
parent 6eb54bec6c
commit a6268dcb53
5 changed files with 58 additions and 4 deletions

View File

@@ -0,0 +1,18 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('problem', '0001_initial'),
]
operations = [
migrations.RemoveField(
model_name='problemtag',
name='description',
),
]

View File

@@ -6,7 +6,7 @@ from account.models import User
class ProblemTag(models.Model):
name = models.CharField(max_length=30)
description = models.CharField(max_length=50)
# description = models.CharField(max_length=50)
class Meta:
db_table = "problem_tag"

View File

@@ -4,7 +4,7 @@ import json
from rest_framework import serializers
from account.models import User
from .models import Problem
from .models import Problem, ProblemTag
class ProblemSampleSerializer(serializers.ListField):
@@ -60,3 +60,12 @@ class EditProblemSerializer(serializers.Serializer):
hint = serializers.CharField(max_length=10000)
visible = serializers.BooleanField()
class ProblemTagSerializer(serializers.ModelSerializer):
class Meta:
model = ProblemTag
class CreateProblemTagSerializer(serializers.Serializer):
name = serializers.CharField(max_length=10)

View File

@@ -11,10 +11,36 @@ from django.db.models import Q
from rest_framework.views import APIView
from utils.shortcuts import serializer_invalid_response, error_response, success_response, paginate, rand_str
from .serizalizers import CreateProblemSerializer, EditProblemSerializer, ProblemSerializer
from .serizalizers import (CreateProblemSerializer, EditProblemSerializer, ProblemSerializer,
ProblemTagSerializer, CreateProblemTagSerializer)
from .models import Problem, ProblemTag
class ProblemTagAdminAPIView(APIView):
def post(self, request):
"""
创建标签的接口
---
request_serializer: CreateProblemTagSerializer
"""
serializer = CreateProblemTagSerializer(data=request.data)
if serializer.is_valid():
try:
tag = ProblemTag.objects.get(name=serializer.data["name"])
except ProblemTag.DoesNotExist:
tag = ProblemTag.objects.create(name=serializer.data["name"])
return success_response(ProblemTagSerializer(tag).data)
else:
return error_response(serializer)
def get(self, request):
keyword = request.GET.get("keyword", None)
if not keyword:
return error_response(u"参数错误")
tags = ProblemTag.objects.filter(name__contains=keyword)
return success_response(ProblemTagSerializer(tags, many=True).data)
def problem_page(request, problem_id):