最近收到很多读者的鼓励,非常开心,这给了我更多将公众号持续更新下去的动力。今天还收到微信公众号开通以来的第一份赞赏,在这里要特别感谢橘子同学。如果你学习的是Python Web开发和Django,本公众号绝对不会让你失望,我会争取所有文章做到清晰易懂,原创免费。如果你是老鸟,本公众号的内容也可以作为系统性的参考资料。
利用django开发web应用, 我们经常需要进行URL重定向,有时候还需要给URL传递额外的参数。比如用户添加文章完成后需要转到文章列表或某篇文章详情。因此熟练掌握HttpResponseDirect, redirect和reverse这三种方法对于Django Web开发是至关重要。今天小编我就带你看下Django URL重定向的HttpResponseDirect, redirect和reverse方法的详细用法。
HttpResponseDirect方法
HttpResponseRedirect是django首选的URL重定向方法,在django.http模块里。该方法的第一个参数是必要的,是用来重定向的URL地址。这个URL可以是完整的链接(比如’http://www.baidu.com‘),也可以是一个不包含域名的静态链接(例如‘/index/’)。
我们下面以新闻博客(blog)为例来看看如何使用HttpResponseDirect方法。假如我们有如下3个urls, 一个展示文章,一个添加文章,一个展示文章详情。我们需要使用该方法在视图中实现两种URL重定向:
-
转向不含参数的URL: 用户添加文章完成后转向文章列表(/index/); 或
-
转向包含参数的URL: 用户添加文章完成后转向文章详情(/article/2/new-day/)
from django.urls import path, re_path
from . import views
# namespace
app_name = 'blog'
urlpatterns = [
# 展示所有文章
path('/index/', views.ArticleListView.as_view(), name='article_list'),
# 展示文章详情
re_path(r'^article/(?P<pk>\d+