Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 使用GET参数捕获URL_Django_Django Urls - Fatal编程技术网

Django 使用GET参数捕获URL

Django 使用GET参数捕获URL,django,django-urls,Django,Django Urls,我有一个旧的Wordpress网站。它有如下URL: /?wpsc产品=abc 我在Django建立了一个新网站,网址如下: /products/abc/ 如何捕获旧URL并将其重定向到新URL?实际上,我不确定如何捕获带有参数的URL 我希望能够编写每一个重定向,而不是生成正则表达式,因为我没有保留所有的slug,其中一些已经更改。在URL.py中,您无法捕获GET参数,例如?wpsc product=abc,但是您可以编写一个视图来检查GET参数并重定向到新视图 下面是一个带有两个视图的简化

我有一个旧的Wordpress网站。它有如下URL:

/?wpsc产品=abc

我在Django建立了一个新网站,网址如下:

/products/abc/

如何捕获旧URL并将其重定向到新URL?实际上,我不确定如何捕获带有参数的URL


我希望能够编写每一个重定向,而不是生成正则表达式,因为我没有保留所有的slug,其中一些已经更改。

URL.py
中,您无法捕获GET参数,例如
?wpsc product=abc
,但是您可以编写一个视图来检查GET参数并重定向到新视图

下面是一个带有两个视图的简化URL.py。索引视图使用参数重定向请求并重定向它们(例如,
/?wpsc product=abc
),还处理不带任何参数的请求(例如,
/
),并返回呈现的索引模板

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', {})
urlpatterns=[
url(r'^$',views.index,name='index'),
url(r'^products/(?P[-\w]+)/$,views.view\u product,name='view\u product'),
]
从django.shortcuts导入重定向,渲染
def索引(请求):
#在GET参数中检查wpsc产品
如果request.GET中有“wpsc产品”:
返回重定向('view_product',slug=request.GET['wpsc-product']))
其他:
#返回常规索引模板
返回呈现(请求'index.html',{})

这是部分答案,因为URL被重定向到同一个slug。如果slug在新网站中发生了更改,它将不起作用。无论如何,这是个好主意。您可以在视图中访问slug,如果需要,可以很容易地更改它。