Python + 장고 페이지 리디렉션
간단한 리디렉션을 수행하는 방법(예:cflocation
콜드퓨전에서, 또는header(location:http://)
PHP의 경우) 장고에서?
간단합니다.
from django.http import HttpResponseRedirect
def myview(request):
...
return HttpResponseRedirect("/path/")
더 많은 정보는 공식 장고 문서에 있습니다.
업데이트: 장고 1.0
현재 장고에서 이것을 하는 더 나은 방법이 분명히 있습니다.generic views
.
예 -
from django.views.generic.simple import redirect_to
urlpatterns = patterns('',
(r'^one/$', redirect_to, {'url': '/another/'}),
#etc...
)
일반 보기 문서에 더 많은 내용이 있습니다.신용 - Carles Barrobes.
업데이트 #2: 장고 1.3+
Django 1.5에서는 redirect_to가 더 이상 존재하지 않으며 RedirectView로 대체되었습니다.요나탄에 대한 신용
from django.views.generic import RedirectView
urlpatterns = patterns('',
(r'^one/$', RedirectView.as_view(url='/another/')),
)
원하는 것에 따라(예: 추가 사전 처리를 원하지 않는 경우), 장고의 것만 사용하는 것이 더 간단합니다.redirect_to
일반 보기:
from django.views.generic.simple import redirect_to
urlpatterns = patterns('',
(r'^one/$', redirect_to, {'url': '/another/'}),
#etc...
)
자세한 내용은 설명서를 참조하십시오.
Django 1.3+의 경우:
from django.views.generic import RedirectView
urlpatterns = patterns('',
(r'^one/$', RedirectView.as_view(url='/another/')),
)
실제로 각 리디렉션에 대한 보기를 갖는 것보다 간단한 방법이 있습니다. - 직접 수행할 수 있습니다.urls.py
:
from django.http import HttpResponsePermanentRedirect
urlpatterns = patterns(
'',
# ...normal patterns here...
(r'^bad-old-link\.php',
lambda request: HttpResponsePermanentRedirect('/nice-link')),
)
대상은 호출 가능한 것일 수도 있고 문자열일 수도 있습니다. 이것이 제가 여기서 사용하는 것입니다.
Django 1.1 이후로는 더 간단한 리디렉션 바로 가기를 사용할 수 있습니다.
from django.shortcuts import redirect
def myview(request):
return redirect('/path')
또한 옵션인 영구 =도 필요합니다.참 키워드 인수입니다.
전체 하위 폴더를 리디렉션하려면url
RedirectView의 인수는 실제로 보간되므로 다음과 같은 작업을 수행할 수 있습니다.urls.py
:
from django.conf.urls.defaults import url
from django.views.generic import RedirectView
urlpatterns = [
url(r'^old/(?P<path>.*)$', RedirectView.as_view(url='/new_path/%(path)s')),
]
그?P<path>
캡처는 에 제공됩니다.RedirectView
캡처된 이 변수는 다음에서 대체됩니다.url
당신이 우리에게 준 주장./new_path/yay/mypath
당신의 원래 길이 그랬다면/old/yay/mypath
.
또한 할 수 있습니다.….as_view(url='…', query_string=True)
쿼리 문자열도 복사할 수 있습니다.
Django 버전 1.3에서는 클래스 기반 접근 방식이 다음과 같습니다.
from django.conf.urls.defaults import patterns, url
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-url/$', RedirectView.as_view(url='/redirect-url/'), name='some_redirect'),
)
이 예제는 URL에 저장됩니다.파이의
주의하세요. 개발 서버에서 이 작업을 수행했기 때문에 나중에 변경하려고 합니다.
저는 그것을 바꾸기 위해 캐시를 지워야 했습니다.앞으로 이러한 머리 긁힘을 피하기 위해 다음과 같이 임시로 만들 수 있었습니다.
from django.views.generic import RedirectView
url(r'^source$', RedirectView.as_view(permanent=False,
url='/dest/')),
page_path = URL로 정의합니다.파이의
def deletePolls(request):
pollId = deletePool(request.GET['id'])
return HttpResponseRedirect("/page_path/")
관리 섹션에서 이 작업을 수행할 수 있습니다.설명서에 설명되어 있습니다.
https://docs.djangoproject.com/en/dev/ref/contrib/redirects/
이것은 대부분의 django 버전에서 작동할 것입니다. 저는 1.6.5에서 사용하고 있습니다.
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
urlpatterns = patterns('',
....
url(r'^(?P<location_id>\d+)/$', lambda x, location_id: HttpResponseRedirect(reverse('dailyreport_location', args=[location_id])), name='location_stats_redirect'),
....
)
이 솔루션에서는 하드 코딩된 URL 대신 URL 패턴의 이름을 사용할 수 있습니다.url의 location_id 매개 변수는 람다 함수로 전달됩니다.
언급URL : https://stackoverflow.com/questions/523356/python-django-page-redirect
'itsource' 카테고리의 다른 글
Mongodb에서 ISO 날짜 형식 지정 (0) | 2023.07.16 |
---|---|
Firebase Cloud Messaging용 API KEY는 어디에서 찾을 수 있습니까? (0) | 2023.07.16 |
WebMvcTest에서 Eureka 및 Spring Cloud Config를 비활성화하는 방법은 무엇입니까? (0) | 2023.07.16 |
DateTimeOffset.이제 T-SQL에서 (0) | 2023.07.16 |
MongoDB의 경우 필드가 일시적이지만 RestController의 경우 필드가 아님을 지정합니다. (0) | 2023.07.06 |