Как передать поля Serizalizer в front-end Framework из RESTful API - DRF (Django)?

Я хочу использовать Svelte в front-end и DRF (Django) в back-end.

Вот что у меня есть сейчас:

#models.py
class Student(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
# serializers.py
class StudentSerializer(serializers.ModelSerializer):
    class Meta:
        model = Student
        fields = "__all__"

Но когда я хочу создать форму во фронтенде (Svelte), мне приходится делать это вручную? Есть ли способ запросить json со всеми необходимыми полями и создать форму на его основе.

Сначала я запрашиваю api.com/students/form, который возвращает json:

{
  "fields":[
    "first_name",
    "last_name"
  ]
}

И тогда я мог бы просто перебирать поля в "fields" и создавать теги <input> для формы соответствующим образом.

Для вашей конечной точки api.com/students/form вы можете создать представление следующим образом:

from django.http import JsonResponse

@api_view(['GET'])
def get_form(request):
    fields = ["first_name","last_name"]
    return JsonResponse({"fields": fields})

Вы должны включить все поля, которые вы хотите, в массив fields, или если вам нужны все поля модели, вы можете получить их следующим образом model._meta.fields или model._meta.get_fields()

Вы можете сделать это, обратившись к метаданным url, просто отправьте OPTIONS запрос к конечной точке, как предложено в документации

Вернуться на верх