创建题目标签相关的 api
This commit is contained in:
18
problem/migrations/0002_remove_problemtag_description.py
Normal file
18
problem/migrations/0002_remove_problemtag_description.py
Normal 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',
|
||||
),
|
||||
]
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user