django post重定向到它自己的页面

时间:2017-02-16 20:41:50

标签: django django-forms django-class-based-views

我有一个表单,其中显示包含数据的表格和两个选择下拉菜单,您可以选择显示数据的日期/年份,因此我将返回context表格和get_initial我m填充下拉列表以使用当前日期和时间。

我的问题是如何使用POSTGET请求重定向到其自己的页面,我的想法是在网址中的某些查询参数中设置值?month=1&year=2016,但我不知道我知道从哪里开始,有人可以帮助我理解这一点,谢谢。

from django.views.generic.edit import FormView
from django.utils import timezone

from .models import Rate
from statistics.forms import StatisticsForm
from statistics.services import StatisticsCalculation


class StatisticsView(FormView):
    template_name = "statistics/invoice_statistics.html"
    form_class = StatisticsForm

    def get_initial(self):
        initial = super(StatisticsView, self).get_initial()
        initial["month_choice"] = timezone.now().month
        initial["invoice_year"] = timezone.now().year
        return initial

    def get_context_data(self, **kwargs):
        context = super(StatisticsView, self).get_context_data(**kwargs)

        default_currency = Rate.EUR
        currency_usd = Rate.USD
        currency_gbp = Rate.GBP

        context["can_view"] = self.request.user.is_superuser
        context["currency"] = default_currency
        context["currency_usd"] = currency_usd
        context["currency_gbr"] = currency_gbp
        context["statistic"] = StatisticsCalculation.\
            statistic_calculation(supplier_default_currency)
        context["statistic_usd"] = StatisticsCalculation. \
            calculation(supplier_default_currency_usd)
        context["statistic_gbp"] = StatisticsCalculation. \
            statistic_calculation(supplier_default_currency_gbp)
        return context
表格

url

url(r'^statistic/$', login_required(views.StatisticsView.as_view()), name='statistics')

模板:

<form action="" method="post">{% csrf_token %}
 <div class="" id="">
   <label for="{{ form.month.month_choice }}"></label>
      {{ form.month_choice }}
 </div>
 <br>
 <div class="" id="">
   <label for="{{ form.year.invoice_year }}"></label>
      {{ form.invoice_year }}
 </div>
 <br>
    # rest of the html

1 个答案:

答案 0 :(得分:0)

帖子将发布到您在HTML表单中设置它们的位置。

如果正确设置了urls.py,那么像这样设置表单元素会将get和posts发送到您的视图。

<form method='post' action =''>

你的url_patterns应该包含一行代码:

url(r'the-url-you want-to-use', StatisticsView.as_view(), name='name_for_reverse_function')