django重定向导致重定向到下一页,但然后返回原始?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django重定向导致重定向到下一页,但然后返回原始?相关的知识,希望对你有一定的参考价值。

我的重定向功能导致了一些问题。我使用reverse来调用视图中的url,其中包含视图所需的参数。没有错误,在网址的浏览器中,它正确显示这些参数。然而,它似乎重定向到新的URL,但在请求新URL的新视图后,页面立即返回到原始视图,新的URL仍然显示在浏览器中。任何人都可以告诉我,如果我正确使用重定向功能或者我正在使用反向错误?

附:我删除了很多代码,因为StackOverflow不会让我发布所有代码。

家用/ urls.py

from django.conf.urls import url
from home import views

app_name = 'home'

urlpatterns = [
    url('^$', views.index, name='index'),
    url('^patient_summary/patientid=(?P<patient_id>d+)&clinicid=(?P<clinic_id>d+)/', views.patient_summary, name='patient_summary'),
    url('^patient_summary/patientid=(?P<patient_id>d+)&clinicid=(?P<clinic_id>d+)/careplanid=(?P<careplan_id>d+)/', views.care_plan, name='care_plan'),
    ]

家用/ views.py

def patient_summary(request, token, patient_id, clinic_id):
    user = get_user(token)
    if request.method == "POST":
        if ('careplanselected' in request.POST):
            props = request.POST.get('careplan')
            props = props.split("@")
            CPID = props[0]
            cpname = props[1]
            my_dict = {'token': token, 'patient_id': patient_id, 'clinic_id': clinic_id, 'careplan_id': CPID}
            return redirect(reverse('home:care_plan', kwargs=my_dict)) 
    return render(request, 'home/patient_summary.html')

def care_plan(request, token, patient_id, clinic_id, careplan_id):
    user = get_user(token)
    care_plan = []
    cpname = '' 
    return render(request, 'home/care_plan.html' )
答案

您的网址格式缺少美元以标记网址的结尾。这意味着您的patient_summary视图将处理针对care_plan视图的请求。

将模式更改为:

url('^patient_summary/patientid=(?P<patient_id>d+)&clinicid=(?P<clinic_id>d+)/$', views.patient_summary, name='patient_summary'),
url('^patient_summary/patientid=(?P<patient_id>d+)&clinicid=(?P<clinic_id>d+)/careplanid=(?P<careplan_id>d+)/$', views.care_plan, name='care_plan'),

以上是关于django重定向导致重定向到下一页,但然后返回原始?的主要内容,如果未能解决你的问题,请参考以下文章

无需重定向的 Django 远程身份验证

成功登录后的 Django 重定向

下载文件并通过 ajax 将其重定向到另一个页面

python - Django内置登录视图不重定向到下一个

mobilefirst注销重定向到新页面

django:登录后重定向到引用页面[重复]