Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Формы, радиобутоны и передача данных [RSS Feed]

#1 Окт. 13, 2013 13:49:17

dreamer-s
Зарегистрирован: 2012-08-13
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Формы, радиобутоны и передача данных

Да мне это понятно, это просто и ясно. Но вот только мне не категории нужно выбирать, а товары, товары конкретной категории. Товары в виде радиобаттонов. Вот поэтому в forms.ру я отправлял id категории, что бы я смог достать конкретные товары одной категории. В общем, я реализовал это, но хочется, что бы в отображаемом <input type=“radio”> был добавлен class к примеру, ну и меня интересует, как я могу достать данные запросом, что был отработан в forms.ру.

Офлайн

#2 Окт. 13, 2013 18:55:13

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Формы, радиобутоны и передача данных

Итак, чтобы выбрать товары какой то категории, нам сначала нужно выбрать категорию.
Не так ли? Мы с вами выбираем категорию, сабмитим форму, во вьюху, передается id категории, там мы по этому id выбираем товары и возвращаем страницу с товарами.
Нет?



Офлайн

#3 Окт. 14, 2013 00:11:19

dreamer-s
Зарегистрирован: 2012-08-13
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Формы, радиобутоны и передача данных

Да, выбор категории реализован, это есть
вот вьюха

def product_once(request, category_id):
	product_once = Category.objects.get(id=category_id) #Неточно назвал переменную
								#это общие данные товаров
								#как описание, к примеру
	product_value = Product.objects.filter(category_id__exact=category_id)
			#это данные о каждом товаре в этой категории
			#передаю в шаблон на случай, если не получится сделать через forms.py
			#(собственно так сейчас и есть)
	if request.method == 'POST': #это в данной задаче не интересует...
		form = ChooseForm(request.POST)
		if form.is_valid():
			pass
	else:
		form = ChooseForm(param=category_id)
	context = {'product': product_once, 'value': product_value, 'form':form}
	return render(request, 'product_once.html', context)

в forms.py
class ChooseForm(forms.Form):
	radio = forms.ChoiceField()
	def __init__(self, *args, **kwargs):
		super(ChooseForm, self).__init__()
		param = kwargs.pop('param')
		self.fields['radio'].widget=forms.RadioSelect()
		self.fields['radio'].label=''
		self.fields['radio'].choices =Product.objects.filter(category_id__exact=param).values_list('id', 'name', 'photo')
#И тут я создал запрос, которым хотел вернуть данные, много данных
Вся фишка в том, что в js я слаб и интересовало, как реализовать смену картинок товара по клику какого-то радиобутона и сейчас в шаблоне у меня криво, но… В цикле выводится следующее
	<input id="radio{{ val.id }}" type="radio" name="rad" class="RadioButtonClass" value='{{ val.photo }}' onClick='picture ("{{ val.id }}");'></input>
Сейчас пишу, тыкаюсь в яваскрипт, что бы реализовать, но как мне средствами джанго добавить class=“CheckBoxClass”? То же самое событие onClick? через value лучше всего id передавать… Короче куча моментов из-за незнания js. Да литературой киньте, что мне оптимальнее подойдет, тоже поможет, правда хочу уже закончить и не париться, но за изучение стоит взяться.

Отредактировано dreamer-s (Окт. 14, 2013 00:13:05)

Офлайн

#4 Окт. 14, 2013 11:32:04

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Формы, радиобутоны и передача данных

1.
а) Юзаем jQuery, событие change.
change
б) В разметке имеем элемент <img>
в) При отработке обработчика change запрашиваем аяксом URL картинки и присобачиаем результат к src.

Как то так это должно выглядеть

<script>
$(document).ready(function(){
$("[name=product]").change(function()
{
var product_id = $("[name=product]:checked").val();
$.getJSON("{%  url 'my_ajax_view_url' %}", {id:product_id}, function(img_url){ $("#img_id").attr("src", img_url)    })
}
)
})
</script>
<input type="radio" name="product" value="1"> Сабля
<input type="radio" name="product" value="2"> Пушка
<input type="radio" name="product" value="3"> Пулемёт
<img id="img_id" src="/static/img/no_picture.png">

ИЛИ

2. Используем форму с определенным target. Вьюха, обрабатывающая реквест от формы пусть рендерит такой шаблон
<html>
<head></head>
<body>
<img src={{ img.url }}>
</body>
</html>
Собственно во фрейм, указанный в target это дело и будет попадать.



Отредактировано FishHook (Окт. 14, 2013 12:47:57)

Офлайн

  • Начало
  • » Django
  • » Формы, радиобутоны и передача данных[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version