麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > Python > 正文

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

2020-02-15 23:46:29
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

用django開(kāi)發(fā)web應(yīng)用, 經(jīng)常會(huì)遇到從一個(gè)舊的url轉(zhuǎn)向一個(gè)新的url。這種隱射也許有規(guī)則,也許沒(méi)有。但都是為了實(shí)現(xiàn)業(yè)務(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_tourlpatterns = patterns('',  (r'^one/$', redirect_to, {'url': '/another/'}),)from django.views.generic import RedirectViewurlpatterns = 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 modelsfrom django.contrib.sites.models import Sitefrom django.utils.translation import ugettext_lazy as _from django.utils.encoding import python_2_unicode_compatible @python_2_unicode_compatibleclass 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)

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

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 午色影院 | 欧美成人精品欧美一级 | 中国女警察一级毛片视频 | 毛片在哪里看 | 国产精品99久久久久久宅女 | 成年免费观看视频 | 久久丝袜脚交足黄网站免费 | 深夜影院一级毛片 | 香蕉久久久久 | 热99在线视频 | 亚洲精品免费播放 | 嗯~啊~用力~高h | 欧美a在线观看 | 精品二区在线观看 | 激情久久免费视频 | 亚洲一区二区在线免费 | 久久看视频 | 久草成人在线观看 | 日本精品二区 | 爱唯侦察 国产合集 亚洲 | 欧美在线中文字幕 | 日本大片在线播放 | 成人国产精品免费 | 欧美一级黄色网 | 亚洲成人在线免费 | av电影在线观看网址 | 国产成人高清在线观看 | 免费在线观看午夜视频 | 91精品国产91久久久 | 一区二区久久久久草草 | 国产一区二区在线免费播放 | 久久久一区二区三区精品 | xnxx 美女19| 久久成年网站 | 成人在线观看一区二区三区 | 欧美一区二区三区免费不卡 | 久久精品二区 | 欧美精品免费一区二区三区 | 欧美成人小视频 | 亚州综合网 | 久久久中精品2020中文 |