Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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
Python Django 1.6 301 url重定向不工作_Python_Django_Redirect - Fatal编程技术网

Python Django 1.6 301 url重定向不工作

Python Django 1.6 301 url重定向不工作,python,django,redirect,Python,Django,Redirect,我正在尝试使用django重定向应用程序进行301重定向,但当我访问旧url时,仍然会得到404页面。我遵循文档,在数据库中添加了一个新旧url,但它仍然不起作用 有没有其他方法来执行301重定向 我有这个urlhttp://localhost:8000/doclistings/?speciality=Dentist我希望它被重定向到http://localhost:8000/doclistings/?speciality=Dentists url.py url(r'^doclistings/$

我正在尝试使用django重定向应用程序进行301重定向,但当我访问旧url时,仍然会得到404页面。我遵循文档,在数据库中添加了一个新旧url,但它仍然不起作用

有没有其他方法来执行301重定向

我有这个url
http://localhost:8000/doclistings/?speciality=Dentist
我希望它被重定向到
http://localhost:8000/doclistings/?speciality=Dentists

url.py

url(r'^doclistings/$', views.doclistings, name='doclistings'),
views.py

def doclistings(request):
    d = getVariables(request)
    if request.method == "GET":
        form = DropdownSelectionForm(request.GET)
        try:
            s_name = request.GET['speciality']
        except:
            s_name = None
        try:
            l_name = request.GET['language']
        except:
            l_name = None
        try:
            g_name = request.GET['gender']
        except:
            g_name = None

        d['s_name'] = s_name # adding these to the forms for the "selected" option
        d['l_name'] = l_name
        d['g_name'] = g_name


        try:
            doctors = filter_doctors(request=request, specialization=s_name, gender=g_name, language=l_name).order_by('-netlikes')

        except Exception:
            return error404(request)

    else:
        form = DropdownSelectionForm()

    d['doctors'] = doctors
    d.update({'form': form, 'languages': Language.objects.all()})
    return render_to_response('m1/doclistings.html',d)

你真的不必做重定向。如果我错了,但您希望访问专业的值,并且如果用户在
牙医
中键入您希望它是
牙医
,请更正

我认为确保正确填写GET请求的键、值的正确方法是表单验证。有很多方法可以进行表单验证,您可以使用javascript或django表单进行验证

但是,快速解决问题的方法是将一些逻辑传递到代码中,即如果
speciality
==
'doctor'
,则将其设置为
doctors

比如说,

def doclistings(request):
    d = getVariables(request)
    if request.method == "GET":
        form = DropdownSelectionForm(request.GET)
        try:
            s_name = request.GET['speciality']
            if s_name == 'Dentist':
                s_name = 'Dentists'
        except:
            s_name = None
        try:
            l_name = request.GET['language']
        except:
            l_name = None
        try:
            g_name = request.GET['gender']
        except:
            g_name = None

        d['s_name'] = s_name # adding these to the forms for the "selected" option
        d['l_name'] = l_name
        d['g_name'] = g_name


        try:
            doctors = filter_doctors(request=request, specialization=s_name, gender=g_name, language=l_name).order_by('-netlikes')

        except Exception:
            return error404(request)

    else:
        form = DropdownSelectionForm()

    d['doctors'] = doctors
    d.update({'form': form, 'languages': Language.objects.all()})
    return render_to_response('m1/doclistings.html',d)
让我知道这是否适合你

干杯,
BioBirdMan

您好,您是否考虑过将两个url指向url中的同一个视图。py我不知道如何做到这一点。我已经用视图和URL更新了问题。您确定try-except表达式中的
doctors=…
正确吗?看来你的404错误来自这里。。。。