zoukankan      html  css  js  c++  java
  • Django RedirectView

      RedirectView作用是重定向一个指定,给定的Url.这个给定的Url可能包含有字典风格的字符串,因为关键字(词)会被改变,所以从这个Url中捕获的参数可能也会被修改,例如,Url中的“%”应该写成“%%”这样python才会将其修改成“%”。

      如果指定的Url是None,那么会触发:HttpResponseGone (410)

    处理流程:
    1.dispatch()
    2.http_method_not_allowed()
    3.get_redirect_url()

    官例:

    #views.py
    from django.shortcuts import get_object_or_404
    from django.views.generic.base import RedirectView
    from articles.models import Article
    class ArticleCounterRedirectView(RedirectView):
    permanent = False
    query_string = True
    pattern_name = 'article-detail'
    def get_redirect_url(self, *args, **kwargs):
    article = get_object_or_404(Article, pk=kwargs['pk'])
    article.update_counter()
    return super(ArticleCounterRedirectView, self).get_redirect_url(*args, **kwargs)
    
    #urls.py
    from django.conf.urls import url
    from django.views.generic.base import RedirectView
    from article.views import ArticleCounterRedirectView, ArticleDetail
    urlpatterns = [
    url(r'^counter/(?P<pk>[0-9]+)/$', ArticleCounterRedirectView.as_view(), name='article-counter'),
    url(r'^details/(?P<pk>[0-9]+)/$', ArticleDetail.as_view(), name='article-detail'),
    url(r'^go-to-django/$', RedirectView.as_view(url='https://djangoproject.com'), name='go-to-django'),
    ]
    


     属性:

    1.url:将会重定向到的url,如果是None,会返回410错误。

    2.pattern_name:将被重定向的模式名

    3.permanent:重定向是否是永久型的,默认是Fasle.它产生的唯一区别是Http状态码的不同;当permanent=True时,状态码为301,permanent=False时,状态码为302.

    4.query_string:确定是否将GET查询子句发送到新的位置。默认为False,此时这个查询串被丢弃,如果设置为True,查询串会被加到Url的尾部。

    方法:

    get_redirect_url(*args, **kwargs)

    构造目标Url用来重定向。

      它默认是把url当作开始字符串,并用%将从url中命名组中捕获来的参数扩展到url后面。如果url没有设置,get_redirect_url()会偿试用从Url中捕获的的参数来倒转pattern_name,如果是query_string发送的请求,它也会将这个query_string添加到它产生的url中。

      有些概念还没理解,估计得等以后学得深入些了才行,到时再来修改吧。

  • 相关阅读:
    ThinkingInJava对this关键字的介绍
    MYSQL(三)
    MySQL(二)
    mysql语句实战
    js事件委托
    Python中应该使用%还是format来格式化字符串?
    js高级知识---词法分析和AO 链
    lsof/netstat命令的一个重要作用: 根据进程查端口, 根据端口查进程
    gg
    io多路复用
  • 原文地址:https://www.cnblogs.com/Andy963/p/5805505.html
Copyright © 2011-2022 走看看