python - variable - 장고 url 패턴




장고 URL 리디렉션 (3)

내 다른 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를 통해 리디렉션하려고합니다.

감사,


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 을 사용하는 대신에, 약간의 un-DRY 인 pattern_name 사용할 수 있으며 url을 바꿀 수 있습니다. 리디렉션도 변경할 필요가 없습니다.


그것을하는 또 다른 방법은 HttpResponsePermanentRedirect를 다음과 같이 사용하는 것입니다.

view.py에서

def url_redirect(request):
    return HttpResponsePermanentRedirect("/new_url/")

url.py에서

url(r'^old_url/$', "website.views.url_redirect", name="url-redirect"),

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_to_home_view> 에서 url을 실제로 지정해야하는 방법에 <url_to_home_view> 하십시오.

permanent=False permanent=True 는 HTTP 302를 반환하고, permanent=True 는 HTTP 301을 반환합니다.

또는 django.shortcuts.redirect 를 사용할 수 있습니다 django.shortcuts.redirect





django