【问题标题】:go back to previous page in django在 django 中返回上一页
【发布时间】:2018-05-23 16:18:46
【问题描述】:

我想保存表单中的数据并在单击“添加”按钮时返回上一页。它显示了一些错误。任何人都可以提出正确的方法吗?

模板.html

  <div class="panel panel-default">
  <div class="panel-heading">
    <h3 class="panel-title">Add your own Category </h3>
  </div>
  <div class="panel-body">
    <form method="POST" class="post-form">
      {% csrf_token %}
      {{ form.as_p }}

                    </div>
                      </div>
                    </div>
        <input type="hidden" name="next" value="{{ request.path }}">
       <button type="submit" class="save btn btn-default" >Add</button>
    </form>

views.py

class CustomCategory(LoginRequiredMixin,CreateView):
    model = Category

   form_class = CategoryForm

   def form_valid(self, form):
    obj = form.save(commit=False)

   def category(request):
    next = request.POST.get('next', '/')
    return render (request,HttpResponseRedirect(next))

【问题讨论】:

  • 上一个页面的 url 可能已存储在 request.META.HTTP_REFERER 中,尝试访问它并将 HttpResponseRedirect() 设置为该 url。
  • “显示一些错误”

标签: python django


【解决方案1】:

与其将重定向添加为表单元素,不如在视图中使用success_url 字段,或者如果您需要访问的URL 依赖于对象,请在视图中使用get_success_url 方法?

https://docs.djangoproject.com/en/2.0/ref/class-based-views/mixins-editing/

【讨论】:

  • 你能告诉我如何使用 success_url 做到这一点吗?我是 Django 新手
  • 你需要添加: from django.urls import reverse (把这个放在开头) 然后,在你看来,添加 success_url=reverse('URL') (确保将 URL 替换为您尝试访问的绝对 URL(采用 Django app:name 格式,而不是 example.com))。另外,我认为您的两种方法都可能是不必要的。第一个实际上并没有改变数据库(不确定这是否是你想要的),第二个似乎并没有做任何事情。
猜你喜欢
  • 2019-01-19
  • 1970-01-01
  • 2012-10-08
  • 1970-01-01
  • 2011-02-02
相关资源
最近更新 更多