• 基于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>')
  • 相关阅读:
    使用批处理脚本在win10系统启动Redis 5.0.10
    异常分析 JedisConnectionException: java.net.SocketTimeoutException: Read timed out
    Spring Boot基于redis分布式锁模拟直播秒杀场景
    管理的经验二
    第三方api接口
    接口测试总结
    测试框架的基本能力
    接口测试的价值
    面试的经验
    管理的经验
  • 原文地址:https://www.cnblogs.com/andrew209/p/9740044.html
Copyright © 2020-2023  润新知