Python Django REST Framework - Model Serializer Form Rendern

Falc410

Vice Admiral
Registriert
Juni 2006
Beiträge
6.343
Kennt sich jemand mit dem REST Framework aus? Ich habe meine API definiert und funktioniert auch alles super. Ich habe zum browsen und testen auch ein ModelViewSet erstellt, das erstellt mir entsprechende HTML Seiten ja automatisch und auch eben auch eine HTML Form um neuen Objekte anzulegen. Nun möchte ich die API in mein Projekt integrieren und würde eben gerne mir die gleiche HTML in meinem Projekt rendern lassen. Aber ich komme einfach nicht weiter.

http://www.django-rest-framework.org/topics/html-and-forms/

Muss ich noch einmal eine neue View in meiner anderen App anlegen oder kann ich irgendwie das ModelViewSet benutzen?

Ich habe ja schon eine View die mir meine Webseite rendert und da soll jetzt einfach eine Form eingefügt werden mit der ich neue Objekte erstellen kann. Natürlich kann ich das auch alles manuell machen und dann per jQuery AJAX POST als JSON an die API schicken - so habe ich das mal testweise umgesetzt - aber das ist ja nicht Sinn der Sache. Dann muss ich für jedes Model eine eigene Form bauen - kostet extrem viel Zeit und unnötiger Code. Wie schaffe ich es also dass ich nur noch render_form serializer ins Template einbaue? Dazu finde ich kein einziges Beispiel leider!
Ergänzung ()

Also dank Stackoverflow habe ich die Lösung. Die will ich nicht vorenthalten.
Eigentlich ganz easy. In der View mache ich einfach
Code:
def manage_tasks(request):
    context_dict = {}
    context_dict['serializer'] = TaskSerializer()
    return render(request, 'portal/manage_tasks.html', context_dict)
Hier hat der Model Serializer gefehlt! Ich habe mich schon die ganze Zeit gefragt wie das gehen soll!
und dann im Template die Form
Code:
 <form action="{% url 'api:question-list' %}" method="POST">
                    {% csrf_token %}
                    {% render_form serializer %}
                    <input type="submit" value="Save">
                </form>
Achtung, die Action URL ist non-sense bei mir, da muss man halt etwas geeignetes angeben wo man hingeleitet werden möchte.
 
Zurück
Oben