使用 GET 参数捕获 URL
Catching URLs with GET parameters
我有旧的 Wordpress 网站。它有 URL 个像:
/?wpsc-product=abc
我用 Django 建立了一个新网站,URL像:
/products/abc/
如何捕获旧的 URL 并将它们重定向到新的?实际上,我不确定如何使用参数捕获 URL。
我希望能够编写每一个重定向,而不是制作正则表达式,因为我没有保留所有的 slug,其中一些已更改。
您无法在 urls.py
中捕获 ?wpsc-product=abc
之类的 GET 参数,但您可以编写一个视图来检查 GET 参数并重定向到新视图。
这是一个包含两个视图的简化 urls.py。索引视图重定向带参数的请求并重定向它们(例如/?wpsc-product=abc
),也处理不带任何参数的请求(即/
和returns呈现的索引模板。
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^products/(?P<slug>[-\w]+)/$', views.view_product, name='view_product'),
]
from django.shortcuts import redirect, render
def index(request):
# check for wpsc-product in GET params
if 'wpsc-product' in request.GET:
return redirect('view_product', slug=request.GET['wpsc-product'])
else:
# return the regular index template
return render(request, 'index.html', {})
我有旧的 Wordpress 网站。它有 URL 个像:
/?wpsc-product=abc
我用 Django 建立了一个新网站,URL像:
/products/abc/
如何捕获旧的 URL 并将它们重定向到新的?实际上,我不确定如何使用参数捕获 URL。
我希望能够编写每一个重定向,而不是制作正则表达式,因为我没有保留所有的 slug,其中一些已更改。
您无法在 urls.py
中捕获 ?wpsc-product=abc
之类的 GET 参数,但您可以编写一个视图来检查 GET 参数并重定向到新视图。
这是一个包含两个视图的简化 urls.py。索引视图重定向带参数的请求并重定向它们(例如/?wpsc-product=abc
),也处理不带任何参数的请求(即/
和returns呈现的索引模板。
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^products/(?P<slug>[-\w]+)/$', views.view_product, name='view_product'),
]
from django.shortcuts import redirect, render
def index(request):
# check for wpsc-product in GET params
if 'wpsc-product' in request.GET:
return redirect('view_product', slug=request.GET['wpsc-product'])
else:
# return the regular index template
return render(request, 'index.html', {})