Django:重定向到视图函数和重定向到url之间的区别是什么(来自urls.py文件)

时间:2017-08-17 13:38:05

标签: django redirect view django-urls

哪种更好/标准做法?

  return redirect('index')
  return redirect('/users/new')

索引是视图函数

/ users / new是来自urls.py的urlpatterns

2 个答案:

答案 0 :(得分:1)

直接使用网址是discouraged by Django's documentation(我的粗体):

  

在处理Django项目时,常见的需求是可以获取最终形式的URL,以嵌入生成的内容(视图和资产URL,向用户显示的URL等)或处理导航流程在服务器端(重定向等)

     

强烈希望避免对这些网址进行硬编码(一种费力的,不可扩展且容易出错的策略)。同样危险的是设计特殊机制来生成与URLconf描述的设计平行的URL,这可能导致生成随时间变得陈旧的URL。

在其他情况下,您可能希望使用reverse(){% url %},或向模型中添加get_absolute_url()方法。

答案 1 :(得分:1)

我认为你的例子中的索引不是视图函数,而是url-name url(r'^some/url/to/index', views.index_2, name='index')

查看函数可以有index_2名称和任何网址路径,但您使用" index"重定向,例如return redirect(reverse('index'))

正如您所看到的,重定向只接受一个url路径,然后反向函数接收一个url名称并返回一个url路径,在示例中反向将返回"some/url/to/index"