2017-02-11 94 views
1

模式提交在我的Django应用程序后引用页,我不得不重定向到在Django

  1. 几页创建投票问题/poll/create-question
  2. 编辑投票问题/poll/edit-question/<question_number>

每个那些页面可以选择将问题与下拉列表中的类别名称相关联。如果所需的类别不在列表中,用户也可以即时创建类别。

点击按钮创建类别后,会弹出一个引导模式,用户可以输入类别名称并提交。此POST请求由单独的view函数处理(使用urlpattern /poll/create-category)。此外,创建类别选项可在这两个页面(创建&编辑)

事情工作正常。除非我想在模式关闭后重定向到原始页面(即创建或编辑)。请求对象有一个属性调用HTTP_REFERER,其中包含完整的网址http://servername:port/poll/create-question。但我只想要推荐网页/poll/create-question的urlpattern。

在提交模态时,Django有没有办法获取并重定向到原始页面? Django通常如何处理这种功能?

+1

您可以在会话中存储当前上下文('create'或''edit''),或将其作为查询字符串追加到POST中提交的表单的'formaction'中。 – schwobaseggl

回答

0

我会说使用http referrer是不可靠的。你应该使用基于类的视图。制作两个看起来像这样的视图。您可以将所有逻辑放在第一个视图中,并在第二个视图中重写成功url方法。

class CrateCategory (CreateView): 
    model = Category 

    def get_success_url (self): 
     return '/poll/create-question/' 

class CreateCategoryToUpdate(CreateCategory): 

    def get_success_url (self): 
      return '/poll/update-question/' 

您应该使用url名称用reverse()方法替换url。