Ich verwende ein Formular in meinem Django-Projekt, um den Namen und die Nummer der Personen für den späteren Kontakt zu erhalten. Es folgten mehrere Anleitungen, einschließlich der Django-Dokumentation, aber es scheint nicht zu funktionieren. Mein Test POST erscheint nicht im Admin und kann auch nicht über die manage.py Shell erreicht werden. Ich ließ den mehrzeiligen Kommentar in meinem Code, um eine andere Methode zu zeigen, die ich nur für den Fall versuchte. Auch in meinen manage.py runserver-Protokollen werden keine Fehler angezeigt.Django: Formulardaten in Datenbank speichern
Form:
from django import forms
class SubscribeForm(forms.Form):
name = forms.CharField(label='Your Name', max_length=100)
phone_number = forms.CharField(label='Phone Number', max_length=12, min_length=10)
Vorlage:
<form action="/success/" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit" />
</form>
Ausblick:
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render
from datetime import datetime
from .models import Person
from .forms import SubscribeForm
def home(request):
# if this is a POST request we need to process the form data
if request.method == 'POST':
# create a form instance and populate it with data from the request:
form = SubscribeForm(request.POST)
# check whether it's valid:
if form.is_valid():
# process the data in form.cleaned_data as required
p = form.save()
'''
name = form.cleaned_data['name']
number = form.cleaned_date['phone_number']
p = Person(name=name, phone_number=number, date_subscribed=datetime.now(), messages_recieved=0)
p.save()
'''
# redirect to a new URL:
return HttpResponseRedirect('/success/')
# if a GET (or any other method) we'll create a blank form
else:
form = SubscribeForm()
return render(request, 'texting/index.html', {'form': form})
ich mehrere Videos und lesen viele SO Seiten gesehen haben, aber immer noch nicht scheint Arbeit.
Dieser Code würde einen Fehler verursachen, da ein normales Form-Objekt keine Speichermethode hat. Da keine Fehler angezeigt werden, muss Ihr Formular entweder nicht gültig sein oder eine andere Ansicht enthalten. –
@DanielRoseman Danke Daniel, habe das übersehen. Die Aktion meiner Vorlage ist '/ success /', also führt die POST-Methode nur den Code in der Ansicht 'success' aus (was nur ein Text ist, der sagt, dass es funktioniert hat). Wenn ich also meine Templates-Aktion auf '/' ändere (wo ich meinen Code geschrieben habe), wird sie gespeichert. Wenn du es als Antwort schreiben willst, werde ich es akzeptieren. –