2016-09-23 7 views
0

Я создаю сайт, основанный на django. В частности, сайт курьерской службы. Мне нужно создать приложение, которое будет использоваться как приложение для цитирования. Пользователь вводит размеры пакета в форму и после отправки формы возвращается цена/кат. На основе введенных размеров.Создание формы запроса в Django

Я делал это до сих пор (views.py)

from django.shortcuts import render, redirect 
from quote.forms import QuoteForm 

    def quoting(request): 
     if request.method == 'GET': 
      form = QuoteForm() 
     else: 
      form = QuoteForm(request.POST) 
      if form.is_valid(): 
       Length = form.cleaned_data['Length'] 
       Breadth = form.cleaned_data['Breadth'] 
       Height = form.cleaned_data['Height'] 

       return redirect('thanks') 
     return render(request, "quote/quote.html", {'form': form}) 

(forms.py)

from django import forms 

class QuoteForm(forms.Form): 

    Length = forms.Integer() 
    Breadth = forms.Integer() 
    Height= forms.Integer() 

(quote.html)

{% extends "shop/base.html" %} 
{% block content %} 
<form method="post"> 
    {% csrf_token %} 
    {{ form }} 
    <div class="form-actions"> 
     <button type="submit">Send</button> 
    </div> 
</form> 
{% endblock %} 

Тогда я что я не хватает html, который отобразил бы ответ. Я не знаю, как это сделать.

Цена определяется:

цена = Вес в упаковке X расстояние доставки вес = (длина х высота ширина X)/5000

Заранее спасибо :)

ответ

0

Вы перенаправлены страница «спасибо» после получения ввода. На этом этапе вам не нужно ничего возвращать.

После ввода длины, ширины и высоты. Вы можете рассчитать цену, выполнив: (Длина * Ширина * Высота)/5000.

Это может быть сохранено в переменной total_price. Затем добавьте «total_price» в ваш контекст при рендеринге.

Наконец, в HTML, вы можете добавить тег шаблона Django как

{% if total_price %} 
    {{ total_price }} 
{{ else }} 
    {{ form }} 

Надеется, что это помогает!

+0

я попытался его снова, но я застрял здесь- смотрите ниже –

0

Когда я отправить форму он возвращает только форму со своими входами

(views.py)

from django.http import HttpResponse, HttpResponseRedirect 
    from django.shortcuts import render, redirect 
    from quote.forms import QuoteForm 


def quoting(request): 
    if request.method == 'GET': 
     form = QuoteForm() 
    else: 
     form = QuoteForm(request.POST) 
     if form.is_valid(): 
      Length = form.cleaned_data['Length'] 
      Breadth = form.cleaned_data['Breadth'] 
      Height = form.cleaned_data['Height'] 
      totalprice=((Length*Breadth*Height)/5000) 
    return render(request, "quote/quote.html", {'form': form}) 

def answer(request): 
    return render(request,"quote/out.html") 

(quote.html)

{% extends "shop/base.html" %} 
{% block content %} 
<form method="post"> 
{% csrf_token %} 
{{ form }} 
<div class="form-actions"> 
<button type="submit" action='/quote/out.html/'>Send</button> 
</div> 
</form> 
{% endblock %} 

(out.html)

{% extends "shop/base.html" %} 
    {% block content %} 
    {% if totalprice %} 
    {{ totalprice }} 
     {{ else }} 
     {{form}} 
{% endblock %} 

(forms.py)

from django import forms 

class ContactForm(forms.Form): 

    Length = forms.IntegerField(required=True) 
    Breadth = forms.IntegerField(required=True) 
    Height = forms.IntegerField() 

(urls.py (приложение))

from django.conf.urls import patterns, url 
from django.views.generic import TemplateView 
     url(r'^quoting/$', 
      'quote.views.quoting', 
      name='quoting' 
      ), 
     url(r'^answer/$', 
      'quote.views.answer', 
      name='answer' 
      )