Django - 重定向时路径中的重复变量
Django - Repeated variable in path when redirecting
我试图将我的项目重定向到另一个页面以防出现验证错误,但由于某种原因,我得到了两次变量。
context = {
"job": Job.objects.get(id=job_id)
}
return render(request, "trip.html", context)
def update(request, job_id):
errors = Job.objects.helper_validator(request.POST)
print(errors)
if len(errors) > 0:
for key, value in errors.items():
messages.error(request, value)
return redirect(f'dashboard/{job_id}/update')
else:
job = Job.objects.get(id=job_id)
job.title = request.POST["title"]
job.desc = request.POST["desc"]
job.location = request.POST["location"]
job.save()
return redirect("/dashboard/")
path('dashboard/<int:job_id>/update', views.update),
错误:当前路径 dashboard/5/dashboard/5/update 与其中任何一个都不匹配。
只需在您的重定向功能中添加一个 /
即可。
return redirect(f'/dashboard/{job_id}/update')
最好为 URL 命名并使用 reverse
函数在代码中获取 URL。
from news import views
path('dashboard/<int:job_id>/update', views.update, name='dashboard')
return redirect(reverse('dashboard', args=[job_id]))
https://docs.djangoproject.com/en/3.1/ref/urlresolvers/#reverse
原因是您错误地使用了redirect
函数:
所以不要使用这个:
return redirect(f'dashboard/{job_id}/update')
只需在 url 的开头添加 斜杠 ,如下所示:
return redirect(f'/dashboard/{job_id}/update')
重定向到特定 URL 的其他一些方法。
- 您可以为 url 模式 中的每个
view
定义一个特定的名称,例如:
path('dashboard/<int:job_id>/update', views.update, name='dashboard'),
然后在您的 templates/views
中使用这个 view-name 用于有用的目的。像这样
return redirect('dashboard', job_id=job_id)
另一种方法是使用 django.urls.
中的 reverse
return redirect(reverse('dashboard', job_id=job_id)) # do the same job for you.
我试图将我的项目重定向到另一个页面以防出现验证错误,但由于某种原因,我得到了两次变量。
context = {
"job": Job.objects.get(id=job_id)
}
return render(request, "trip.html", context)
def update(request, job_id):
errors = Job.objects.helper_validator(request.POST)
print(errors)
if len(errors) > 0:
for key, value in errors.items():
messages.error(request, value)
return redirect(f'dashboard/{job_id}/update')
else:
job = Job.objects.get(id=job_id)
job.title = request.POST["title"]
job.desc = request.POST["desc"]
job.location = request.POST["location"]
job.save()
return redirect("/dashboard/")
path('dashboard/<int:job_id>/update', views.update),
错误:当前路径 dashboard/5/dashboard/5/update 与其中任何一个都不匹配。
只需在您的重定向功能中添加一个 /
即可。
return redirect(f'/dashboard/{job_id}/update')
最好为 URL 命名并使用 reverse
函数在代码中获取 URL。
from news import views
path('dashboard/<int:job_id>/update', views.update, name='dashboard')
return redirect(reverse('dashboard', args=[job_id]))
https://docs.djangoproject.com/en/3.1/ref/urlresolvers/#reverse
原因是您错误地使用了redirect
函数:
所以不要使用这个:
return redirect(f'dashboard/{job_id}/update')
只需在 url 的开头添加 斜杠 ,如下所示:
return redirect(f'/dashboard/{job_id}/update')
重定向到特定 URL 的其他一些方法。
- 您可以为 url 模式 中的每个
view
定义一个特定的名称,例如:
path('dashboard/<int:job_id>/update', views.update, name='dashboard'),
然后在您的 templates/views
中使用这个 view-name 用于有用的目的。像这样
return redirect('dashboard', job_id=job_id)
另一种方法是使用 django.urls.
中的reverse
return redirect(reverse('dashboard', job_id=job_id)) # do the same job for you.