Как передать поля 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 запрос к конечной точке, как предложено в документации