Arbeiten mit Django, ich habe ein Modell Foo
mit einem Fremdschlüssel zu einem Modell Bar
. Wenn ich ein Foo
Objekt auf meiner Site erstellen möchte, möchte ich Attribute des Bar
Objekts in demselben Formular festlegen können.CSRF-Verifikationsfehler für einzelnes Formular mit zwei Modellen
Ich kann die Ansicht und die Vorlage festlegen, um diese beiden Modelle in derselben Form zu verwenden. Jedoch, wenn ich gehe, um das Formular zu senden, bekomme ich eine 403 verbotene Fehlermeldung sagen:
CSRF Token fehlt oder nicht korrekt.
Ich habe einen {% csrf_token %}
Tag in meiner Form, also bin ich mir nicht sicher, wie ich das beheben soll. Hat jemand irgendwelche Ideen?
In meinem views.py:
def foo_add(request):
if request.method == "POST":
fooForm = FooForm(request.POST, instance=Foo())
barForm = BarForm(request.POST, instance=Bar())
if fooForm.is_valid() and barForm.is_valid():
foo = fooForm.save()
bar = barForm.save()
return HttpResponseRedirect('/foos/add')
else:
fooForm = FooForm(instance=Foo())
barForm = BarForm(instance=Bar())
return render_to_response(
'foo_app/foo_add.html',
{'foo_form': fooForm, 'bar_form': barForm}
)
foo_add.html:
{% extends "foo_app/__base.html" %}
{% load bootstrap3 %}
{% block content %}
<form action="" method="post">{% csrf_token %}
{% bootstrap_form foo_form layout='inline' %}
{% bootstrap_form var_form layout='inline' %}
{% buttons %}
<button type="submit" class="btn btn-primary">
{% bootstrap_icon "star" %} Save Foo
</button>
{% endbuttons %}
</form>
{% endblock %}
EDIT: Ich bin nicht zu fragen, wie ein Formular mit zwei Modelle zu erstellen. Ich bin ziemlich sicher, dass das Formular korrekt erstellt wird und Informationen wie erwartet weitergegeben wird. Ich frage, warum ich den Fehler 403 erhalte, nachdem ich das Formular ausgefüllt und eingereicht habe.
Hier ist, was die erzeugte HTML wie folgt aussieht:
<form action="" method="post">
<div class="form-group">
<label class="sr-only" for="id_foo-a">A</label>
<input class="form-control" id="id_foo-a" name="foo-a"
placeholder="A" required="required" title="" type="text" />
</div>
<div class="form-group">
<label class="sr-only" for="id_bar-b">B</label>
<input class="form-control" id="id_bar-b" min="0" name="bar-b"
placeholder="B" required="required" title="" type="number" />
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">
<span class="glyphicon glyphicon-star"></span> Save Foo
</button>
</div>
</form>
Mögliche Duplikat [Django 2 Modelle 1 Form] (http://stackoverflow.com/questions/11512972/django-2-models-1-form) – yedpodtrzitko
Leider @PedroLobito ausdrückte ich die falsch Frage. Es war ein Problem mit der API von ShareFile, nicht, wie man mit curl posten sollte. Ich habe mit meinem Aufruf zur API einen einfachen Fehler gemacht, aber herausgefunden. Ich hätte es dich wissen lassen sollen. – thanksd