【问题标题】:Redirect to current page after editing a record编辑记录后重定向到当前页面
【发布时间】:2019-07-24 07:44:52
【问题描述】:

我在 django 中使用分页列出了 100 条记录。每页包含 10 条记录。假设我在第 6 页并选择了要编辑的记录。编辑记录后,成功的 url 重定向列表视图(这是第一页)。我需要留在我选择要编辑的记录的页面。

我尝试使用 {{ request.get_full_path }} 来显示当前 url。但是我不能通过它来编辑 url,如果我通过了,它将显示在 url 中。我正在使用基于类的视图。

def form_valid(self, form):
    self.object = form.save(commit=False)
    now = datetime.now()
    self.object.updator = self.request.user.username
    self.object.date_updated = now 
    self.object.save()
    return HttpResponseRedirect(request.META.get('HTTP_REFERER'))

假设我在第 6 页,选择了一条记录进行编辑。编辑记录后,我需要重定向回第 6 页。请建议我实现这一目标的方法。

【问题讨论】:

    标签: django python-3.x django-models


    【解决方案1】:

    添加此代码以编辑对象列表模板中的链接。

    <a href="{% url 'your_edit_urls_name' object.id %}?redirect_page={{ request.GET.page }}">edit</a>
    

    并将get_success_url 写入您的基于类的编辑视图

    def get_success_url(self):
            return '{0}?page={1}'.format(
                reverse_lazy('your_list_url_name'),
                self.request.GET.get('redirect_page'))
    

    并在form_valid方法中返回get_success_url

    return HttpResponseRedirect(self.get_success_url())
    

    【讨论】:

    • 嗨,谢谢你的回复 Saeed,我试过了,但我遇到了一个例外。异常值:quote_from_bytes() 预期字节数。
    • quote_from_bytes() 是什么?
    • 谢谢你,我明白了。请编辑答案。返回 HttpResponseRedirect(self.get_success_url()),使用括号。
    【解决方案2】:

    如果您想保留 GET 参数,请不要使用 HttpResponseRedirect。使用return render(request, self.template, context)return render(request, self.template)

    【讨论】:

      【解决方案3】:

      在编辑记录后渲染您的页面,并将您的获取数据作为渲染请求中的上下文传递。

        def form_valid(self, form):
              self.object = form.save(commit=False)
              now = datetime.now()
              self.object.updator = self.request.user.username
              self.object.date_updated = now 
              self.object.save()
              return render(request, "you_html_page.html")
      

      【讨论】:

        猜你喜欢
        • 2021-12-04
        • 1970-01-01
        • 2015-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多