重定向vs反向Django

时间:2019-03-03 01:18:43

标签: django django-models django-templates django-views

我在模型中的get_absolute_url方法中使用过反向,但我希望我对反向和重定向之间的区别有所了解,我曾尝试在Google上进行搜索,但几乎没有 我不知道该怎么写才能说服堆栈溢出我没有其他描述

3 个答案:

答案 0 :(得分:4)

反向和重定向的含义完全不同。我对这两个混淆感到非常惊讶。但这是一个简单的解释:

Django中的

reverse用于查找给定资源的URL。假设您有一个博客网站,并且要从主页上提供指向博客文章的链接。当然,您可以仅硬编码/posts/123/并仅在URL中更改博客文章的ID,但这以后就很难更改该帖子的URL。

这就是Django带有反向功能的原因。您需要做的就是传递URL路径的名称(在urlpatterns中定义),Django会为您找到正确的URL。

之所以称为reverse,是因为实际上是确定给定URL应该调用哪个视图的逆过程(该过程称为解析)。

重定向不特定于Django或任何其他Web框架。重定向意味着对于给定的URL(或操作),应指示用户访问特定的URL。这可以通过向浏览器发送特殊的重定向请求来完成,浏览器将为用户处理该重定向请求,因此在此过程中无需用户采取任何操作。您可以在重定向过程中使用reverse来确定应将用户重定向到的URL。

答案 1 :(得分:2)

GwynBleidD给了您答案,但是有一个原因可能会使您感到困惑。 Django redirect快捷方式接受几种不同形式的参数。其中之一是带有参数的URLpattern鬃毛,然后将其传递给反向以生成要重定向到的实际URL。但这只是启用通用模式的捷径。

答案 2 :(得分:1)

两者之间最基本的区别是:  重定向方法会将您重定向到常规的特定路由。  反向方法会将完整的URL作为字符串返回到该路由。