简体   繁体   中英

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

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 which 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 accordingly.

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()

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM