Scorpion_MB
@Scorpion_MB
Изучаю Питон

Как получить значение поля из формы в шаблоне django?

Добрый день. Как получить данные из поля формы шаблона? Форма задается в явном виде. Мне нужно получить два значения: increment и decrement, а потом обработать из в представлении. Приведу код.

шаблон
<form action="{% url 'cart:cart_modificate' product.id %}" method="post">
     {% csrf_token %}
      <input type="hidden" name="product" value="{{product.id}}" />
      <input type="hidden" name="increment" value="increment" />
      <input type="submit" value="+" />
</form>
<form action="{% url 'cart:cart_modificate' product.id %}" method="post">
     {% csrf_token %}
      <input type="hidden" name="product" value="{{product.id}}" />
      <input type="hidden" name="decrement" value="decrement" />
      <input type="submit" value="-" />
</form>


начало представления
def cart_modificate(request, product_id):
    cart = Cart(request)
    product = get_object_or_404(Product, id=product_id)
    increment =


Можно, конечно создать два представления для каждой формы. Но мне хочется обойтись одним.
  • Вопрос задан
  • 5818 просмотров
Решения вопроса 2
deepblack
@deepblack Куратор тега Django
def cart_modificate(request, product_id):
    if request.method =='POST':
        increment = request.POST.get('increment')
        ... # для остальных полей по аналогии + добавить условие


Но можно ведь проще:

<form action="{% url 'cart:cart_modificate' product.id %}" method="post">
     {% csrf_token %}
      <input type="submit" value="increment" />
      <input type="submit" value="decrement" />
</form>


def cart_modificate(request, product_id):
    if 'increment' in request.POST:
        # do something
    else:
        # do something else
Ответ написан
Scorpion_MB
@Scorpion_MB Автор вопроса
Изучаю Питон
Все получилось.

шаблон:
<form action="{% url 'cart:cart_modificate' %}" method="post">
    {% csrf_token %}
     <input type="hidden" name="id" value="{{product.id}}" />
     <input class="cart_form" name="button" type="submit" value="+" />
     <input class="cart_form" name="button" type="submit" value="-" />
</form>

представление:
def cart_modificate(request):
    cart = Cart(request)
    if request.method == 'POST':
        product_id = request.POST['id']
        button = request.POST['button']
        product = get_object_or_404(Product, id=product_id)
        if button == '+':
            increment = button
            decrement = None
        else:
            increment = None
            decrement = button
        cart.modificate(product, increment, decrement)
    return redirect('cart:cart_detail')
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы