Câu trả lời:
Nếu bạn đang ở trên Django 1.4 hoặc 1.5, bạn có thể làm điều này:
from django.core.urlresolvers import reverse_lazy
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(url=reverse_lazy('my_named_pattern'), permanent=False)),
...
Nếu bạn đang ở trên Django 1.6 trở lên, bạn có thể làm điều này:
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(pattern_name='my_named_pattern', permanent=False)),
...
Trong Django 1.9, giá trị mặc định của permanentđã thay đổi từ Đúng thành Sai. Vì điều này, nếu bạn không chỉ định permanentđối số từ khóa, bạn có thể thấy cảnh báo này:
RemoveedInDjango19Warning: Giá trị mặc định của 'RedirectView.permanent' sẽ thay đổi từ True thành false trong Django 1.9. Đặt một giá trị rõ ràng để tắt cảnh báo này.
(r'^.*/$', RedirectView.as_view(url='http://newurl.com')),
pattern_nameđối số để RedirectViewthực thi ngược lại cho bạn tại thời điểm cuộc gọi bằng cách sử dụng tên mẫu đã cho. Các thông số hữu íchpermanentquery_string khác bao gồm và .
Điều này làm việc cho tôi.
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(url='/')),
...
Trong ví dụ trên '/'có nghĩa là nó sẽ chuyển hướng đến trang chỉ mục, nơi bạn cũng có thể thêm bất kỳ mẫu url nào.
RedirectViewcó permanent=Truemặc định trong các phiên bản cũ của Django và permanent=Falsenhư mặc định trong các phiên bản Django> = 1.9.
cho django v2 +
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),
]
permanent=Falselà mặc định. Để biết thêm chi tiết, vui lòng đọc: docs.djangoproject.com/en/2.1/topics/http/shortype/#redirect developer.mozilla.org/en-US/docs/Web/HTTP/
Cách này được hỗ trợ trong các phiên bản cũ hơn của django nếu bạn không thể hỗ trợ RedirectView
Trong chế độ xem
def url_redirect(request):
return HttpResponseRedirect("/new_url/")
Trong url.py
url(r'^old_url/$', "website.views.url_redirect", name="url-redirect"),
Bạn có thể làm cho nó vĩnh viễn bằng cách sử dụng HttpResponsePermanentRedirect