Форум сайта python.su
есть форма селект. не могу никак получить из нее выбранные значения.
Суть в том чтобы вьюха получила выбранное значение - вернула html с аргументом.
html
<form name="doc_tip" action="/tips/" method="post">{% csrf_token %} <p><select> <optgroup label="Договорная"> <option value="r1" name="r1" id="r1">Доходный</option> <option value="r2" name="r2" id="r2">Расходный</option> <option value="r3" name="r3" id="r3">Разное</option> </optgroup> <optgroup label="Инф-справоч"> <option value="t1" name="t1" id="t1">СЗ</option> <option value="t2" name="t2" id="t2">Заявка</option> <option value="t3" name="t3" id="t3">Разное</option> </optgroup> </select></p> <p> <input type="radio" value="r11">dohod <br> <input type="radio" value="r22">rashod </p> <p><input type="submit" value="Send"></p> </form>
def tips(request): args = {} args.update(csrf(request)) args['trueq_create'] = 1 args['trueqq'] = 1 args['username'] = auth.get_user(request).username if request.method == 'POST': if 'r1' in request.POST: args['trueq_tips1'] = 1 return render_to_response('create_docsup.html', args, context_instance=RequestContext(request)) elif 'r2' in request.POST: args['trueq_tips2'] = 1 return render_to_response('create_docsup.html', args, context_instance=RequestContext(request)) elif 'r11' in request.POST: args['trueq_tips1'] = 1 return render_to_response('create_docsup.html', args, context_instance=RequestContext(request)) elif 'r22' in request.POST: args['trueq_tips2'] = 1 return render_to_response('create_docsup.html', args, context_instance=RequestContext(request)) else: return redirect('/')
Отредактировано Xa_xoo (Окт. 18, 2015 12:31:57)
Офлайн
Xa_xooИ где форма? И где селект?
есть форма селект
Офлайн
я прошу прощение, не то сбросил. Поправил в первом посте
Офлайн
Для того чтобы форма отправила значение контрола, у него обязательно должен быть элемент name.
Не у option, а у select.
Офлайн
Fishhook, спасибо, обозвал селект и теперь передает в пост)
Офлайн
данные из формы получаю, но как мне перехватить Value? из селекта я должен выбрать value и на основании этого вернуть соответствующие данные… использовать request.POST.values()? как это должно выглядить? можно пример какой-нибудь?
Офлайн
данные из формы получаю, но как мне перехватить Value? из селекта я должен выбрать value и на основании этого вернуть соответствующие данные… использовать request.POST.values()? как это должно выглядить? можно пример какой-нибудь?
Офлайн
Если в select добавить name=“choice”
то
получить value можно будет с помощью
request.POST['choice']
<p><select name="choice"> <optgroup label="Договорная"> <option value="r1value" id="r1">Доходный</option>
Отредактировано Petr_Kashyapov (Окт. 22, 2015 19:23:45)
Офлайн
спасибо
Офлайн
сейчас проблема такова:
суть в том чтобы получить заполненную форму (текст, фаил). И сохранить это в бд как отдельный объект.
создал модель:
class Karto(models.Model): id_name = models.IntegerField(default=0) small = models.CharField(max_length=255) file = models.FileField(upload_to='uploads')
class CreateKarto(forms.Form): class Meta(): model = Karto fields = ['small', 'file'] widgets = { 'small': Textarea(attrs={'cols': 80, 'rows': 30}), }
<form action="/dokarto/" method="POST">{% csrf_token %} <label for name="small">Краткое содержание</label> <textarea name="small" cols="80" rows="20"></textarea><br><br> <input type="file" name="file"><br><br> <input type="submit" value="click"> </form>
def create_karto(request): args = {} args.update(csrf(request)) if request.method == 'POST': if request.POST and ("pause" not in request.session): form = CreateKarto(request.POST) if form.is_valid(): instances = form.save() request.session.set_expiry(60) request.session['pause'] = True args['create_done'] = 1 render_to_response('create_docsup.html', args, context_instance=RequestContext(request)) else: redirect('/docsup/', args) else: redirect('/docsup/', args) else: redirect('/docsup/', args)
Отредактировано Xa_xoo (Окт. 23, 2015 12:35:49)
Офлайн