Я видел чванливую документацию по Flask и Django. В Flask я могу спроектировать и документировать свой API, написанный вручную. (Укажите, какие поля являются обязательными, необязательными и т. д. в разделах параметров).
Вот как мы делаем во Flask
class Todo(Resource):
"Describing elephants"
@swagger.operation(
notes='some really good notes',
responseClass=ModelClass.__name__,
nickname='upload',
parameters=[
{
"name": "body",
"description": "blueprint object that needs to be added. YAML.",
"required": True,
"allowMultiple": False,
"dataType": ModelClass2.__name__,
"paramType": "body"
}
],
responseMessages=[
{
"code": 201,
"message": "Created. The URL of the created blueprint should be in the Location header"
},
{
"code": 405,
"message": "Invalid input"
}
]
)
Я могу выбрать, какие параметры включать, а какие нет. Но как мне реализовать то же самое в Django? Документ Django-Swagger в
совсем не хорош. Моя главная проблема — как мне написать свой raw-json в Django.
В Django это автоматизируется, что не позволяет мне настраивать json. Как реализовать то же самое в Django?
Вот файл models.py
class Controller(models.Model):
id = models.IntegerField(primary_key = True)
name = models.CharField(max_length = 255, unique = True)
ip = models.CharField(max_length = 255, unique = True)
installation_id = models.ForeignKey('Installation')
serializers.py
class ActionSerializer(serializers.ModelSerializer):
class Meta:
model = Controller
fields = ('installation',)
urls.py
from django.conf.urls import patterns, url
from rest_framework.urlpatterns import format_suffix_patterns
from modules.actions import views as views
urlpatterns = patterns('',
url(r'(?P[0-9]+)', views.ApiActions.as_view()),
)
views.py
class ApiActions(APIView):
"""
Returns controllers List
"""
model = Controller
serializer_class = ActionSerializer
def get(self, request, installation,format=None):
controllers = Controller.objects.get(installation_id = installation)
serializer = ActionSerializer(controllers)
return Response(serializer.data)
Мои вопросы:
1) Если мне нужно добавить поле, скажите xyz, которого нет в моих моделях, как его добавить?
2) Тихий, аналогичный 1st< /strong>, если мне нужно добавить поле, которое принимает значения ч/б 3 предоставленных значения, то есть раскрывающийся список. как добавить его?
3) Как добавить необязательное поле? (поскольку в случае запроса PUT я могу обновить только 1 поле, а остальное оставить пустым, что означает необязательное поле).
4) И как мне добавить поле, которое принимает строку json, как это делает этот API?
Спасибо
Я могу делать все эти вещи во Flask, жестко закодировав свой API. Но в Django он автоматизирует мои модели, что не дает (как я считаю) доступа к настройке моего API. Во Flask мне просто нужно написать руками свой API, а затем интегрироваться со Swagger. Существует ли то же самое в Django?
Например, мне просто нужно добавить следующий json в мой код Flask и он ответит на все мои вопросы.
# Swagger json:
"models": {
"TodoItemWithArgs": {
"description": "A description...",
"id": "TodoItem",
"properties": {
"arg1": { # I can add any number of arguments I want as per my requirements.
"type": "string"
},
"arg2": {
"type": "string"
},
"arg3": {
"default": "123",
"type": "string"
}
},
"required": [
"arg1",
"arg2" # arg3 is not mentioned and hence 'opional'
]
},
Подробнее здесь: https://stackoverflow.com/questions/214 ... umentation