【发布时间】:2021-02-26 19:39:14
【问题描述】:
我尝试通过 Django 中的 URL 传递列表。 我发现了这个:Passing a list through url in django 但我仍然得到错误。感觉自己在绕圈跑。
我的网址:
path('query/', include(('query.urls', 'query-space'), namespace='query-space')),
re_path(r'^2/(?P<amb_list>\w+)/$',views.ambitionGenPage, name='userambitiongen'),
我的看法:
def ambitionPage(request):
if request.method == 'POST':
form = AmbitionForm(request.POST)
if form.is_valid():
ambs_list = form.cleaned_data['ambition_field']
redirect = HttpResponseRedirect(reverse('query-space:userambitiongen'))
redirect['Location'] += '&'.join(['ambs={}'.format(x) for x in ambs_list])
return redirect
form = AmbitionForm()
return render(request, 'query/ambition.html',{'form':form,})
def ambitionGenPage(request):
ambitions = request.GET.getlist('amb_list')
if ambitions:
ambitions = [int(x) for x in ambitions]
print(ambitions) #I first want to check what data I get
return render(request, 'query/ambitionGen.html',{})
我修改了链接的代码。
在行中:
redirect = HttpResponseRedirect(reverse('query-space:userambitiongen', args=(amb_list)))
他不知道这个论点:
NameError: name 'amb_list' is not defined
在示例中没有参数。当我尝试这个时,我得到了错误:
Reverse for 'userambitiongen' with no arguments not found. 1 pattern(s) tried: ['query/2/(?P<amb_list>\\w+)/$']
我在互联网上也没有找到这个表达式:redirect['Location']
有人可以向我解释一下 ['Location'] 代表什么吗?
什么是正确的解决方案?我花了好几个小时试图自己找到它。
非常感谢您的宝贵时间!
【问题讨论】:
-
不就是一个错字吗?你有一个变量
ambs_list,它找不到变量amb_list,确实不存在。 -
哦,这就是原因。谢谢!现在我收到错误,ambs_list 的示例列表不适合我的 URL 中的正则表达式:
Reverse for 'userambitiongen' with arguments '('FR', 'FP')' not found. 1 pattern(s) tried: ['query/2/(?P<amb_list>\\w+)/$']我接管了链接提问者的 URL,因为没有其他 URL。可悲的是那没有用。你知道正则表达式应该是怎样的吗?我也不明白以“重定向”开头的两行中发生了什么。我将非常感谢您的解释。我希望我不要表现得太愚蠢 -
在这种情况下,您必须更具体地了解您正在使用的 url 文件(不仅仅是它们的摘录,而不仅仅是其中一个),以便其他人检查可能是什么继续。