Home > Enterprise >  How to pass Serizalizer Fields to front-end Framework from RESTful API - DRF (Django)?
How to pass Serizalizer Fields to front-end Framework from RESTful API - DRF (Django)?

Time:01-24

I want to use Svelte in the front-end and DRF (Django) in the back-end.

This is what I have right now:

#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__"

But when I know want to create a form in the front-end (Svelte) I have to manually do that? Is there a way of requesting a json with all the required fields and the to build a form around it.

Like first I request api.com/students/form wich returns a json:

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

And then I could just iterate over the fields in "fields" and create <input> tags for the form acordingly.

CodePudding user response:

For your endpoint api.com/students/form you can create a view like this:

from django.http import JsonResponse

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

You have to include all the fields you want on your fields array, or if you want all the fields of the model you can get them like this model._meta.fields or model._meta.get_fields()

CodePudding user response:

You can do this by accessing metadata of the url, simply send OPTIONS request to the endpoint as suggested in documentation

  •  Tags:  
  • Related