最新国产好看的视频,伊人天堂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à)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

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

1. 在url 中配置 redirect_to 或者 RedirectView(django 1.3 版本以上)
2. 在view 中 通過 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 中 通過 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 去查找,有沒有匹配的URL 。如果有匹配且新的RUL不為空則自動(dòng)轉(zhuǎn)向新的URL,如果新的URL為空,則返回410. 如果沒有匹配,仍然按原來的錯(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)文章

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

    通過python-pptx模塊操作ppt文件的方法

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

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

    這篇文章主要介紹了讓Django的BooleanField支持字符串形式的輸入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    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ì)大家有所幫助。一起跟隨小編過來看看吧
    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è)干凈的開發(fā)環(huán)境,使得項(xiàng)目更易于維護(hù)和部署
    2024-10-10
  • Django同時(shí)連接多種數(shù)據(jù)庫的實(shí)現(xiàn)

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

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

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

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

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

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

    python中的super如何使用

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

最新評(píng)論

上栗县| 北辰区| 涿鹿县| 依安县| 揭东县| 弥渡县| 景洪市| 青阳县| 崇礼县| 宁晋县| 张家港市| 西乌| 鄂托克旗| 嘉鱼县| 大方县| 沿河| 肇源县| 嵊泗县| 中西区| 台南县| 云林县| 漳州市| 镇赉县| 海兴县| 山阳县| 剑阁县| 无棣县| 大洼县| 武清区| 海安县| 育儿| 正安县| 克拉玛依市| 肇东市| 常德市| 安泽县| 镇沅| 扎囊县| 定远县| 蓝山县| 陇西县|