Mohammad Shahbaz
Mohammad Shahbaz

Reputation: 423

data is not inserting in database when I click submit button

I have created my first app in Django (1.10.5) / Python 3.4. I have a login page and a register page. Which is working fine.

I can create new user and login with that id. Now after the login I want user to fill a form with some information and click on submit. And the information should get stored in the database.

So I created a model first : 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)

This has created a table in the DB.

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 %}

But when I click on submit button, It does not insert data into my table.

Upvotes: 0

Views: 1107

Answers (2)

super.single430
super.single430

Reputation: 254

the first: you need add urls.py to you app the second: you need to change your views.py to lool like this

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

Upvotes: 0

Mohammad Shahbaz
Mohammad Shahbaz

Reputation: 423

here is the answer, we need to use the 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)

Upvotes: 1

Related Questions