Tuesday, 17 September 2013

Form seemingly not returning post values or saving to DB on Django

Form seemingly not returning post values or saving to DB on Django

I've found several posts with questions practically identical to this, but
I've spent many hours trying to figure out my problem based on these posts
and just cannot for the life of me figure this out. I am trying to take
values from a form and put them into my database (and then list what's in
the database underneath my form, but that's more for me to see if it's
working). It seems that either the form values aren't being extracted or
I'm not properly saving to the database.
Here are my models:
from django.db import models
from django.forms import ModelForm
class Users(models.Model):
user_first_name = models.CharField(max_length=255)
user_last_name = models.CharField(max_length=255)
email_address = models.CharField(max_length=255)
class UserForm(ModelForm):
class Meta:
model = Users
fields = ['user_first_name', 'user_last_name', 'email_address']
views:
from django.shortcuts import render
from django.http import HttpResponseRedirect
from manage_users.models import Users, UserForm
def index(request):
users_list = Users.objects.all()
if request.method == 'POST':
form = UserForm(request.POST)
if form.is_valid():
user_first_name = request.POST.get('user_first_name', '')
user_last_name = request.POST.get('user_last_name', '')
email_address = request.POST.get('email_address', '')
users_obj = Users(user_first_name=user_first_name,
user_last_name=user_last_name, email_address=email_address)
users_obj.save()
return HttpResponseRedirect('/')
else:
form = UserForm()
return render(request, 'home.html', {
'form': form, 'users_list': users_list
})
And lastly, my html:
<body>
<form action="" method="post"> {% csrf_token %}
<div>
<label for="user_first_name">First Name:</label>
<input type="text" id="user_first_name" />
<br><label for="user_last_name">Last Name:</label>
<input type="text" id="user_last_name" />
<br><label for="email_address">Email Address:</label>
<input type="text" id="email_address" />
</div>
<button id ="add" type="submit">Submit</button>
</form>
{% if users_list %}
<ul>
{% for user in users_list %}
<li>{{ user }}</li>
{% endfor %}
</ul>
{% else %}
<p>No users are currently in the system</p>
{% endif %}
</body>

No comments:

Post a Comment