基于Python+Django重定向的例子

Posted 捏不死的小蚂蚁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Python+Django重定向的例子相关的知识,希望对你有一定的参考价值。

Django源码, 这里HttpResponseRedirect和HttpResponsePermanentRedirect没有太大差别,前者是返回302临时重定向,后者返回301永久重定向

 1 class HttpResponseRedirectBase(HttpResponse):
 2     allowed_schemes = [http, https, ftp]
 3 
 4     def __init__(self, redirect_to, *args, **kwargs):
 5         super().__init__(*args, **kwargs)
 6         self[Location] = iri_to_uri(redirect_to)
 7         parsed = urlparse(str(redirect_to))
 8         if parsed.scheme and parsed.scheme not in self.allowed_schemes:
 9             raise DisallowedRedirect("Unsafe redirect to URL with protocol ‘%s‘" % parsed.scheme)
10 
11     url = property(lambda self: self[Location])
12 
13     def __repr__(self):
14         return <%(cls)s status_code=%(status_code)d%(content_type)s, url="%(url)s"> % {
15             cls: self.__class__.__name__,
16             status_code: self.status_code,
17             content_type: self._content_type_for_repr,
18             url: self.url,
19         }
20 
21 
22 class HttpResponseRedirect(HttpResponseRedirectBase):
23     status_code = 302
24 
25 
26 class HttpResponsePermanentRedirect(HttpResponseRedirectBase):
27     status_code = 301
28 
29 
30 class HttpResponseNotModified(HttpResponse):
31     status_code = 304
32 
33     def __init__(self, *args, **kwargs):
34         super().__init__(*args, **kwargs)
35         del self[content-type]
36 
37     @HttpResponse.content.setter
38     def content(self, value):
39         if value:
40             raise AttributeError("You cannot set content to a 304 (Not Modified) response")
41         self._container = []

小栗子:

1 def redirectdemo(request):
2     dic_params = {username: request.GET.get(username),
3                   password: request.GET.get(password)}
4     if validate_parameters(dic_params):
5         return HttpResponsePermanentRedirect("http://www.baidu.com")
6     else:
7         return HttpResponse(<html>error page</html>)

 

以上是关于基于Python+Django重定向的例子的主要内容,如果未能解决你的问题,请参考以下文章

django ----视图和路由

Django - 基于组在登录时重定向

用于重定向的 Django 自定义装饰器

Python + Django 页面重定向

Python + Django 页面重定向

如何在 Django 1.3 中使用基于类的视图重定向条件?