【问题标题】:django post redirects to it's own pagedjango 帖子重定向到它自己的页面
【发布时间】:2017-02-16 20:41:49
【问题描述】:

我有一个表格,它显示带有数据的表格和两个选择下拉菜单,您可以选择日期/年份来显示数据,所以我返回 context 用于表格和 get_initial 我正在填充下拉列表使用当前日期和时间。

我的问题是如何使POST 请求使用GET 重定向到它自己的页面,这个想法是在URL 中的一些查询参数中设置值,例如?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

【问题讨论】:

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


    【解决方案1】:

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

    假设您正确设置了 urls.py,这样设置表单元素会将获取和帖子发送到您的视图。

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

    你的 url_patterns 应该包含如下一行:

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

    【讨论】:

    • 所以url 是这里的诀窍,它是一个简单的url,所以你能解释一下如何设置我的url,让我更新我的问题。
    • 看起来正确,您的网址被定向到哪些视图?
    • 正是我得到的,问题是,当我想浏览数据时,表单正在重定向,我不希望这样,我希望他留在那个页面上并向我显示更多数据- 你是什么意思我正在使用FormView,这是我的问题,我有一个简单的表格,有两个字段分别代表月份和年份
    • 获取请求转到该视图还是被重定向?发布请求会转到该视图还是被重定向?您还没有在视图中设置 sucess_url 吗?您的表单模板是什么样的?
    • @wobbily_cat,用部分 html 更新了我的问题
    猜你喜欢
    • 2012-08-13
    • 2015-04-19
    • 2018-11-17
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    相关资源
    最近更新 更多