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ố để RedirectView
thự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 íchpermanent
query_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.
RedirectView
có permanent=True
mặc định trong các phiên bản cũ của Django và permanent=False
như 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=False
là 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