Im trying to create a simple form in django that takes a dropdown value and a text from the user. The text value entered by the user is passed and Im able to print it in the console. But the dropdown value is displayed as blank even after user selects a valid option. Can somebody please help me resolve it.
views.py
def product(request):
if request.method == 'POST':
form = ProductForm(request.POST)
if form.is_valid():
print ('selected dropdown value from the form is: ',form.cleaned_data['selection'])
print('entered text is: ',form.cleaned_data['mytext'])
#return render_to_response('loggedin.html',{'full_name' : request.user.username,'my_selection' :request.selection})
else:
print ('invalid selection')
return render_to_response('loggedin.html',{'full_name' : request.user.username,'my_selection' : 'invalid'})
else:
form = ProductForm()
args = {}
args.update(csrf(request))
args['form'] = ProductForm()
print args
return HttpResponseRedirect('/accounts/selected')
forms.py
class ProductForm(forms.Form):
selection = forms.ChoiceField(required=False)
mytext = forms.CharField(required=True)
loggedin.html
{% extends "base.html" %}
{% block content %}
<h2> Hi {{full_name}} you are logged in!!</h2>
<form action="/accounts/product/" method="post">{% csrf_token %}
{{ form.errors }}
{{ form.non_field_errors }}
<label>Select a product:</label>
<select name="selection">
<option selected="select" disabled>--select one--</option>>
<option value="{{Iphone}}">Iphone</option>
<option value="{{Samsung}}">Samsung</option>
<option value="{{Motorola}}">Motorola</option>
<option value="{{Blackberry}}">Blackberry</option>
<option value="{{Nokia}}">Nokia</option>
</select>
<br/>
<label>Text: </label>
<input name="mytext" type="text"><br/>
<input type="submit" value="select">
</form>
<p>Click <a href="/accounts/logout/" here </a> to logout </p>
<p>Your selected product is: {{my_selection}}</p>
{% endblock %}
urls.py
url(r'^accounts/product/$', 'mysite.views.product'),
url(r'^accounts/selected/$', 'mysite.views.selected'),