Django,如何将参数发送到重定向视图

时间:2014-08-29 03:30:40

标签: python django django-views

我的视图函数应该接收一个参数:

def result(request, exercise_field = {"tro": "lolo"}):
    return render(request, "lolapp/result.html", exercise_field)

" Exercise_field"是一个带参数的变量。

该功能的网址:

url(r'^result/', view = views.result, kwargs = {'lolo': 'roflo'}, name = 'result')

正如你所看到的,我试图通过" kwargs"关键词。到目前为止,还没有成功。

调用此视图的快捷方式:

    return redirect('result', kwargs={'lol': 'rofl'})

最后是错误信息:

Reverse for 'result' with arguments '()' and keyword arguments '{'kwargs': {'lol': 'rofl'}}' not found. 1 pattern(s) tried: ['result/']

我需要向"结果"发送一个参数。图。

这是典型的#No; NoReverseMatch"错误,但没有互联网解决方案为我工作。

我做错了什么?

4 个答案:

答案 0 :(得分:0)

可能只是错字:

kwargs={'lol': 'rofl'}

你应该尝试:

kwargs={'lolo': 'rofl'}

答案 1 :(得分:0)

return redirect('result', kwargs={'lol': 'rofl'})

应该是kwargs:

mydict = {'lol': 'rofl'}
return redirect('result',passdict=mydict)

或者只是你可以使用args:

mydict = {'lol': 'rofl'}
return redirect('result',mydict)

答案 2 :(得分:0)

您的网址根本不接受任何参数:视图kwargs是硬编码的。因此,任何请求 - 无论是重定向还是正常请求 - 都不可能传递除硬编码之外的任何kwargs。

您有多种选择:

  • 更改网址格式,使其接受参数;
  • 添加额外的模式,其他kwargs硬编码;
  • 传递会话中的数据而不是kwargs。

答案 3 :(得分:0)

我的问题的解决方案很简单:我应该使用会话。

有关会话的信息:http://machinesaredigging.com/2013/10/29/how-does-a-web-session-work/

如何在Django中使用会话:https://docs.djangoproject.com/en/1.6/topics/http/sessions/

只需将其存储在 request.session [“my_data_key”] 中,我就可以了。

request.session 是一个简单的python词典。