2015-04-13 2 views
1

Im пытается создать простую форму в django, которая принимает выпадающее значение и текст от пользователя. Текстовое значение, введенное пользователем, передается и Im умеет печатать его на консоли. Но выпадающее значение отображается как пустое даже после того, как пользователь выбирает допустимый вариант. Может кто-нибудь, пожалуйста, помогите мне решить это.Выпадающие значения не передаются в 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'), 
+0

Вы должны использовать Django ChoiceField для этого. См. Http://stackoverflow.com/questions/24403075/django-choicefield – Dillon

ответ

0

Почему вы поместили все значения для параметров в символах шаблона? Вы не определили какие-либо переменные для Nokia, Blackberry и т. Д., Поэтому эти значения будут отображаться как пустые строки. Просто используйте обычные строки:

<option value="Nokia">Nokia</option> 
0

{{Iphone}} Переменные, {{Nokia}} и т.д. не определены (они должны быть переменными, что приходит из контекста представления при вызове функции визуализации). Значение, которое вы получаете, это пустая строка, статические значения в html-файле, я предлагаю вам больше узнать о шаблонах и способах переноса переменных из представления в шаблон. Кроме того, если вы уже создали ProductForm, используйте опцию choices в ChoiceField.

Удачи вам!

0

Вы можете использовать jQuery, чтобы получить значение, выбранное в раскрывающемся списке, и передать его, выполнив вызов AJAX.

<select id="products" name="selection"> 
    <option selected="select" disabled>--select one--</option>> 
    <option value="iphone">Iphone</option> 
    <option value="samsung">Samsung</option> 
</select> 

Вы можете получить выбранное значение с помощью

var selected = $('#products').val(); 
Смежные вопросы