2017-01-23 3 views
0

Ich habe meine erste App in Django (1.10.5)/Python 3.4 erstellt. Ich habe eine Login-Seite und eine Registrierungsseite. Was gut funktioniert.Daten werden nicht in die Datenbank eingefügt, wenn ich auf "Senden" -Button klicke

Ich kann neue Benutzer erstellen und mit dieser ID anmelden. Jetzt möchte ich nach dem Login ein Formular mit ein paar Informationen ausfüllen und auf submit klicken. Und die Informationen sollten in der Datenbank gespeichert werden.

Also habe ich ein Modell zuerst: Model.py

class UserInformation(models.Model): 
    firstName = models.CharField(max_length=128) 
    lastName = models.CharField(max_length=128) 
    institution = models.CharField(max_length=128) 
    institutionNumber = models.CharField(max_length=128) 
    cstaPI = models.CharField(max_length=128) 
    orchidNumber = models.CharField(max_length=128) 

Dieses eine Tabelle in der DB erstellt hat.

forms.py

class UserInformationForm(ModelForm): 
    class Meta: 
     model = UserInformation 
     fields = '__all__' 

views.py

def home(request): 
    form = UserInformationForm() 
    variables = { 'form': form, 'user': request.user } 
    return render(request,'home.html',variables) 

home.html

{% extends "base.html" %} 
{% block title %}Welcome to Django{% endblock %} 
{% block head %}Welcome to Django{% endblock %} 
{% block content %} 
    <p> Welcome {{ user.username }} !!! <a href="/logout/">Logout</a><br /><br /> </p> 

    <form method="post" action=".">{% csrf_token %} 
     <table border="0"> 
      {{ form.as_table }} 
     </table> 
    <input type="submit" value="Submit" style="position:absolute"/> 

    </form> 

{% endblock %} 

Aber wenn ich auf die Unter klicken mit button, Es fügt keine Daten in meine Tabelle ein.

+0

Sie erhalten die Informationen zur Ansicht nicht. Wie erwarten Sie, dass es in die Datenbank eingefügt wird? Lesen Sie mehr über 'request.POST' Handling in Django – karthikr

+0

Ich möchte nur diese Informationen in meiner Datenbank .. Ich dachte, es wird einfach sein. –

+0

Ja, es ist einfach, aber Sie müssen in der Ansicht damit umgehen. Lesen Sie hier mehr: https://docs.djangoproject.com/en/1.10/topics/forms/#the-view – karthikr

Antwort

1

hier ist die Antwort, wir die request.POST

def home(request): 
    if request.method == 'POST': 
     form = UserInformationForm(request.POST) 
     form.save() 
     return HttpResponseRedirect('/home/') 
    else: 
     form = UserInformationForm() 
     variables = { 'form': form, 'user': request.user } 

    return render(request,'home.html',variables) 
0

die erste verwenden müssen: Sie müssen urls.py hinzufügen Sie die zweite App: Sie müssen Ihre views.py ändern lool wie folgt

` 
    info = UserInformation() 
    lastName = request.POST.get('lastName') 
    ... 
    info.save() 
` 
Verwandte Themen