二十五岁时我们都一样愚蠢、多愁善感,喜欢故弄玄虚,可如果不那样的话,五十岁时也就不会如此明智。
标题:Django 页面重定向
页面重定向在Web应用程序中有很多原因需要。您可能希望在发生特定操作时将用户重定向到其他页面,或者基本上出现错误。例如,当用户登录到您的网站时,他通常会重定向到主主页或他的个人仪表板。在Django中,重定向是使用'重定向'方法完成的。
'redirect'方法作为参数:您想要重定向到的URL作为字符串视图的名称。
到目前为止,myapp / views看起来如下所示 -
def hello(request): today = datetime.datetime.now().date() daysOfWeek = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] return render(request, "hello.html", {"today" : today, "days_of_week" : daysOfWeek}) def viewArticle(request, articleId): """ A view that display an article based on his ID""" text = "Displaying article Number : %s" %articleId return HttpResponse(text) def viewArticles(request, year, month): text = "Displaying articles of : %s/%s"%(year, month) return HttpResponse(text)让我们将hello视图更改为重定向到djangoproject.com,并将viewArticle重定向到我们的内部'/ myapp / articles'。为此,myapp / view.py将更改为 -
from django.shortcuts import render, redirect from django.http import HttpResponse import datetime # Create your views here. def hello(request): today = datetime.datetime.now().date() daysOfWeek = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] return redirect("https://www.djangoproject.com") def viewArticle(request, articleId): """ A view that display an article based on his ID""" text = "Displaying article Number : %s" %articleId return redirect(viewArticles, year = "2045", month = "02") def viewArticles(request, year, month): text = "Displaying articles of : %s/%s"%(year, month) return HttpResponse(text)在上面的例子中,首先我们从django.shortcuts中导入了重定向,并且为了重定向到Django官方网站,我们只是将完整的URL作为字符串传递给'redirect'方法,对于第二个示例(viewArticle视图)'重定向'方法将视图名称和他的参数作为参数。
访问/ myapp / hello,会给你下面的屏幕 -
并访问/ myapp / article / 42,会给你下面的屏幕 -
也可以通过添加permanent = True参数来指定'重定向'是暂时的还是永久的。用户将看不到任何区别,但这些是搜索引擎在您的网站排名时考虑的细节。
还要记住我们在url.py中定义的'name'参数,同时映射URL -
url(r'^articles/(?P\d{2})/(?P\d{4})/', 'viewArticles', name = 'articles'),这个名字(这里的文章)可以用作'重定向'方法的参数,那么我们的viewArticle重定向可以从 -
def viewArticle(request, articleId): """ A view that display an article based on his ID""" text = "Displaying article Number : %s" %articleId return redirect(viewArticles, year = "2045", month = "02")def viewArticle(request, articleId): """ A view that display an article based on his ID""" text = "Displaying article Number : %s" %articleId return redirect(articles, year = "2045", month = "02")注意 - 还有一个函数可以生成URL; 它以与重定向相同的方式使用;
reverse
方法(django.core.urlresolvers.reverse
)。此函数不会返回HttpResponseRedirect
对象,而只是包含使用任何传递的参数编译的视图的URL的字符串。