어떻게 django로redirect를 실현하는지 몇 가지 방법의 총결을 상세히 설명하다

2902 단어
django로 웹 응용 프로그램을 개발하면 오래된 URL에서 새로운 URL로 전환하는 경우가 종종 있습니다.이런 은사는 규칙이 있을지도 모르고, 없을지도 모른다.하지만 모두 업무를 실현하기 위한 것이다.전체적으로 말하면 다음과 같은 몇 가지 방법으로django의redirect를 실현할 수 있다.
1. URL에 Redirect 설정to 또는 RedirectView(django 1.3 이상) 2.뷰에서 HttpResponseRedirect를 통해 redirect 3.django의 Redirects app를 이용하여 실현
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를 통해 redirect 구현

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

3. django의 Redirects app로 구현
1. settings에서.py에'django'추가contrib.redirects'부터 너의 인스타그램까지APPS 설정.2.'django'증가contrib.redirects.middleware.Redirect Fallback Middleware'부터 너의 MIDDLEWARE 까지CLASSES 설정 중.3. 운영 관리자.py syncdb. django 만들기redirect 이 시계는site 를 포함합니다id, old_path and new_path 필드.
주요 작업은 Redirect Fallback Middleware가 완성한 것입니다. 만약django가 404 오류를 발견하면 이때django일치하는 URL이 있는지 redirect에서 찾습니다.일치하는 새 RUL이 비어 있지 않으면 자동으로 새 URL으로 이동하고 새 URL이 비어 있으면 410으로 돌아갑니다.일치하지 않으면 원래의 오류로 되돌아옵니다.
500 오류가 아니라 404 관련 오류만 처리할 수 있으니 주의하십시오.
삭제 추가 djangoredirect표는요?

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 관련 ORM을 사용하면 save, delete를 실현할 수 있습니다.
상기 세 가지 방법은 모두django redirect를 실현할 수 있는데 사실 가장 자주 사용하는 것은 첫 번째와 두 번째, 세 번째 방법은 매우 드물다.

좋은 웹페이지 즐겨찾기