最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解如何用django實(shí)現(xiàn)redirect的幾種方法總結(jié)

 更新時(shí)間:2018年11月22日 08:34:46   作者:晨戈  
這篇文章主要介紹了如何用django實(shí)現(xiàn)redirect的幾種方法總結(jié),詳細(xì)的介紹3種實(shí)現(xiàn)方式,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

用django開(kāi)發(fā)web應(yīng)用, 經(jīng)常會(huì)遇到從一個(gè)舊的url轉(zhuǎn)向一個(gè)新的url。這種隱射也許有規(guī)則,也許沒(méi)有。但都是為了實(shí)現(xiàn)業(yè)務(wù)的需要??傮w說(shuō)來(lái),有如下幾種方法實(shí)現(xiàn) django的 redirect。

1. 在url 中配置 redirect_to 或者 RedirectView(django 1.3 版本以上)
2. 在view 中 通過(guò) HttpResponseRedirect 實(shí)現(xiàn) redirect
3. 利用 django 的 redirects app實(shí)現(xiàn)

1 在url 中配置 redirect_to 或者 RedirectView(django 1.3 版本以上)

from django.views.generic.simple import redirect_to
urlpatterns = patterns('',
  (r'^one/$', redirect_to, {'url': '/another/'}),
)

from django.views.generic import RedirectView
urlpatterns = patterns('',
  (r'^one/$', RedirectView.as_view(url='/another/')),
)

2. 在view 中 通過(guò) HttpResponseRedirect 實(shí)現(xiàn) redirect

from django.http import HttpResponseRedirect
 
def myview(request):
  ...
  return HttpResponseRedirect("/path/")

3. 利用 django 的 redirects app實(shí)現(xiàn)

1. 在settings.py 中  增加 'django.contrib.redirects' 到你的 INSTALLED_APPS 設(shè)置.
2. 增加 'django.contrib.redirects.middleware.RedirectFallbackMiddleware' 到你的MIDDLEWARE_CLASSES 設(shè)置中.
3. 運(yùn)行 manage.py syncdb. 創(chuàng)建 django_redirect 這個(gè)表,包含了 site_id, old_path and new_path 字段.

主要工作是 RedirectFallbackMiddleware  完成的,如果 django  發(fā)現(xiàn)了404 錯(cuò)誤,這時(shí)候,就會(huì)進(jìn)django_redirect 去查找,有沒(méi)有匹配的URL 。如果有匹配且新的RUL不為空則自動(dòng)轉(zhuǎn)向新的URL,如果新的URL為空,則返回410. 如果沒(méi)有匹配,仍然按原來(lái)的錯(cuò)誤返回。

注意,這種僅僅處理 404 相關(guān)錯(cuò)誤,而不是 500 錯(cuò)誤的。

增加刪除 django_redirect 表呢?

from django.db import models
from django.contrib.sites.models import Site
from django.utils.translation import ugettext_lazy as _
from django.utils.encoding import python_2_unicode_compatible
 
@python_2_unicode_compatible
class Redirect(models.Model):
  site = models.ForeignKey(Site)
  old_path = models.CharField(_('redirect from'), max_length=200, db_index=True,
    help_text=_("This should be an absolute path, excluding the domain name. Example: '/events/search/'."))
  new_path = models.CharField(_('redirect to'), max_length=200, blank=True,
    help_text=_("This can be either an absolute path (as above) or a full URL starting with 'http://'."))
 
  class Meta:
    verbose_name = _('redirect')
    verbose_name_plural = _('redirects')
    db_table = 'django_redirect'
    unique_together=(('site', 'old_path'),)
    ordering = ('old_path',)
 
  def __str__(self):
    return "%s ---> %s" % (self.old_path, self.new_path)

采用類似如上的MODEL ,另外用DJANGO相關(guān)ORM 就可以實(shí)現(xiàn)save,delete了。

以上三種方法都可以實(shí)現(xiàn) django redirect,其實(shí)最常用的,是第一種與第二種,第三種方法很少用。

相關(guān)文章

  • 通過(guò)python-pptx模塊操作ppt文件的方法

    通過(guò)python-pptx模塊操作ppt文件的方法

    這篇文章主要介紹了通過(guò)python-pptx模塊操作ppt文件的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,本文給大家介紹的需要的朋友可以參考下
    2020-12-12
  • Python利用Scrapy框架爬取豆瓣電影示例

    Python利用Scrapy框架爬取豆瓣電影示例

    這篇文章主要介紹了Python利用Scrapy框架爬取豆瓣電影,結(jié)合實(shí)例形式分析了Python使用Scrapy框架爬取豆瓣電影信息的具體操作步驟、實(shí)現(xiàn)技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2020-01-01
  • Django如何使用redis作為緩存

    Django如何使用redis作為緩存

    這篇文章主要介紹了Django如何使用redis作為緩存,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 讓Django的BooleanField支持字符串形式的輸入方式

    讓Django的BooleanField支持字符串形式的輸入方式

    這篇文章主要介紹了讓Django的BooleanField支持字符串形式的輸入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • 使用keras實(shí)現(xiàn)Precise, Recall, F1-socre方式

    使用keras實(shí)現(xiàn)Precise, Recall, F1-socre方式

    這篇文章主要介紹了使用keras實(shí)現(xiàn)Precise, Recall, F1-socre方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • 深入理解?Python?中的?pip?虛擬環(huán)境(最佳實(shí)踐)

    深入理解?Python?中的?pip?虛擬環(huán)境(最佳實(shí)踐)

    本文深入講解了Python中pip虛擬環(huán)境的概念及其重要性,并詳細(xì)介紹了如何創(chuàng)建、激活和管理虛擬環(huán)境,以及如何使用requirements.txt文件記錄和管理項(xiàng)目依賴,文章指出,使用虛擬環(huán)境可以有效避免依賴沖突,為每個(gè)項(xiàng)目提供一個(gè)干凈的開(kāi)發(fā)環(huán)境,使得項(xiàng)目更易于維護(hù)和部署
    2024-10-10
  • Django同時(shí)連接多種數(shù)據(jù)庫(kù)的實(shí)現(xiàn)

    Django同時(shí)連接多種數(shù)據(jù)庫(kù)的實(shí)現(xiàn)

    在開(kāi)發(fā)Django項(xiàng)目的時(shí)候,很多時(shí)候都是使用一個(gè)數(shù)據(jù)庫(kù),即settings 中只有default數(shù)據(jù)庫(kù),但是有一些項(xiàng)目確實(shí)也需要使用多個(gè)數(shù)據(jù)庫(kù),本文主要介紹了Django同時(shí)連接多種數(shù)據(jù)庫(kù)的實(shí)現(xiàn),感興趣的可以了解一下
    2023-11-11
  • python中的集合及集合常用的使用方法

    python中的集合及集合常用的使用方法

    這篇文章主要介紹了python中的集合及集合常用的使用方法,集合是一個(gè)無(wú)序的不重復(fù)元素序列,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • Python處理函數(shù)調(diào)用超時(shí)的四種方法

    Python處理函數(shù)調(diào)用超時(shí)的四種方法

    在實(shí)際開(kāi)發(fā)過(guò)程中,我們可能會(huì)遇到一些場(chǎng)景,需要對(duì)函數(shù)的執(zhí)行時(shí)間進(jìn)行限制,例如,當(dāng)一個(gè)函數(shù)執(zhí)行時(shí)間過(guò)長(zhǎng)時(shí),可能會(huì)導(dǎo)致程序卡頓、資源占用過(guò)高,因此,在某些情況下,我們希望限制函數(shù)調(diào)用的最大時(shí)所以本文給大家介紹了Python處理函數(shù)調(diào)用超時(shí)的四種方法
    2025-04-04
  • python中的super如何使用

    python中的super如何使用

    這篇文章主要介紹了python中的super,python中的super,名為超類,可以簡(jiǎn)單的理解為執(zhí)行父類的__init__函數(shù),本文就著重看下super的具體作用,需要的朋友可以參考下
    2022-03-03

最新評(píng)論

汉川市| 呼玛县| 读书| 大石桥市| 社会| 尤溪县| 云霄县| 红安县| 九龙坡区| 嘉禾县| 喀什市| 句容市| 兴仁县| 徐水县| 横峰县| 富阳市| 菏泽市| 公安县| 绥阳县| 盐山县| 丹东市| 长乐市| 洪洞县| 亚东县| 保定市| 彩票| 五家渠市| 齐齐哈尔市| 自治县| 东乌珠穆沁旗| 裕民县| 灵丘县| 绥德县| 宁夏| 东莞市| 凤冈县| 阳信县| 金乡县| 方城县| 永春县| 福海县|