You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django重定向传递数据至新视图失败,request.GET为空QueryDict

Django redirect传递GET参数失败的解决方法

你的问题出在redirect()函数的用法上,当前代码里的第二个参数{'email_id':email}并没有被当作GET参数附加到URL上,而是被当成了URL反转时的命名参数(若使用URL名称的情况),但你直接写了路径/content/,所以这个字典完全没起作用。

正确实现方式有两种:

1. 直接拼接GET参数到URL路径

修改add_prompt视图:

def add_prompt(request):
    email='abc@gmail.com'
    return redirect(f'/content/?email_id={email}')

2. 使用reverse生成URL并传递参数(更推荐,符合Django最佳实践)

先在urls.py里给content视图命名:

# urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('content/', views.content, name='content'),
    # 其他URL配置...
]

然后修改add_prompt视图:

from django.urls import reverse

def add_prompt(request):
    email='abc@gmail.com'
    return redirect(reverse('content') + f'?email_id={email}')

或是用redirect的参数传递方式(需对应调整URL配置):

from django.urls import reverse

def add_prompt(request):
    email='abc@gmail.com'
    return redirect('content', email_id=email)

这种方式要求你的URL配置包含对应参数:

path('content/<str:email_id>/', views.content, name='content'),

此时content视图需通过参数接收:

def content(request, email_id):
    print(email_id)
    return render(request,'abd/content.html')

验证效果

修改后再访问add_prompt视图,content视图里的request.GET就能正确获取到email_id参数,request.GET.get('email_id')会返回abc@gmail.com。

内容的提问来源于stack exchange,提问作者Akhand Chaurasia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 18:27:53