【发布时间】:2015-04-13 18:27:30
【问题描述】:
我试图在 django 中创建一个简单的表单,该表单接受下拉值和来自用户的文本。用户输入的文本值被传递,我可以在控制台中打印它。但即使用户选择了有效选项,下拉值也会显示为空白。谁能帮我解决一下。
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'),
【问题讨论】:
-
您应该为此使用 Django ChoiceField。见:stackoverflow.com/questions/24403075/django-choicefield