Django URL 리디렉션
다른 URL과 일치하지 않는 트래픽을 다시 홈페이지로 리디렉션 이동해야합니까?
urls.py :
urlpatterns = patterns('',
url(r'^$', 'macmonster.views.home'),
#url(r'^macmon_home$', 'macmonster.views.home'),
url(r'^macmon_output/$', 'macmonster.views.output'),
url(r'^macmon_about/$', 'macmonster.views.about'),
url(r'^.*$', 'macmonster.views.home'),
)
현재 마지막 항목은 모든 "기타"트래픽을 홈페이지로 보내지 만 HTTP 301 또는 302 를 통해 리디렉션하고 싶습니다 .
RedirectView 라는 클래스 기반보기를 시도 할 수 있습니다.
from django.views.generic.base import RedirectView
urlpatterns = patterns('',
url(r'^$', 'macmonster.views.home'),
#url(r'^macmon_home$', 'macmonster.views.home'),
url(r'^macmon_output/$', 'macmonster.views.output'),
url(r'^macmon_about/$', 'macmonster.views.about'),
url(r'^.*$', RedirectView.as_view(url='<url_to_home_view>', permanent=False), name='index')
)
url
에서와 같이 <url_to_home_view>
실제로 URL을 지정해야하는 방법 에 유의하십시오.
permanent=False
HTTP 302 permanent=True
를 반환하고 HTTP 301을 반환합니다.
또는 django.shortcuts.redirect 를 사용할 수 있습니다 .
Django 1.8에서 이것이 제가 한 방법입니다.
from django.views.generic.base import RedirectView
url(r'^$', views.comingSoon, name='homepage'),
# whatever urls you might have in here
# make sure the 'catch-all' url is placed last
url(r'^.*$', RedirectView.as_view(pattern_name='homepage', permanent=False))
을 사용하는 대신 약간의 건조하지 않는 사용 URL을 url
사용할 수 pattern_name
있습니다.
내가있는 것처럼 django 1.2에 있고 RedirectView가 존재하지 않는 경우 리디렉션 매핑을 추가하는 또 다른 경로 방법은 다음을 사용하는 것입니다.
(r'^match_rules/$', 'django.views.generic.simple.redirect_to', {'url': '/new_url'}),
경기의 모든 경로를 다시 수도 있습니다. 이 앱의 폴더를 변경하지만 북마크를 유지하려는 경우에 유용합니다.
(r'^match_folder/(?P<path>.*)', 'django.views.generic.simple.redirect_to', {'url': '/new_folder/%(path)s'}),
URL 라우팅을 수정하려고 .htaccess에 대한 액세스 권한이없는 경우 django.shortcuts.redirect보다 선호됩니다 (Appengine에있는 app.yaml 액세스 권한은 URL 리디렉션을 허용하지 않습니다. .htaccess).
이를 수행하는 또 다른 방법은 HttpResponsePermanentRedirect를 다음과 같이 사용하는 것입니다.
view.py에서
def url_redirect(request):
return HttpResponsePermanentRedirect("/new_url/")
url.py에서
url(r'^old_url/$', "website.views.url_redirect", name="url-redirect"),
다른 방법은 잘 작동하지만 좋은 오래된 django.shortcut.redirect
.
아래 코드는 이 answe r 에서 것입니다.
장고 2.x에서
from django.contrib import admin
from django.shortcuts import redirect
from django.urls import path, include
urlpatterns = [
# this example uses named URL 'hola-home' from app named hola
# for more redirect's usage options: https://docs.djangoproject.com/en/2.1/topics/http/shortcuts/
path('', lambda request: redirect('hola/', permanent=False)),
path('hola/', include("hola.urls")),
path('admin/', admin.site.urls),
]
참고 URL : https://stackoverflow.com/questions/14959217/django-url-redirect
'IT' 카테고리의 다른 글
stdin과 SSL을 연결하는 방법은 무엇입니까? (0) | 2020.08.29 |
---|---|
Xcode 프로젝트에서 사용하지 않는 이미지를 찾는 방법은 무엇입니까? (0) | 2020.08.29 |
코드 숨김에서 어떤 속성에 액세스하는 방법은 무엇입니까? (0) | 2020.08.29 |
VBA를 사용하여 사용자 지정 리본 탭을 추가하는 방법은 무엇입니까? (0) | 2020.08.29 |
마크 다운의 MIME 유형은 무엇입니까? (0) | 2020.08.29 |