模板和视图之间的金字塔数据交换

时间:2015-03-07 11:23:29

标签: python model-view-controller pyramid

我正在尝试将一些数据从模板传递到我的views.py,用它做一些处理,然后将数据传回模板。我最初不知道如何做到这一点,但在浏览谷歌和Stackoverflow之后,我尝试了一个对我来说似乎有点明确的解决方案。这就是我的尝试。

我的views.py: -

@view_config(route_name='home', renderer='templates/mytemp.pt')
def my_view(request):

    data = request.POST["data"]
    process(data) #function that does something with my data
    return {'project': 'myproject','content':data}
mytemp.pt

一个小的javascript片段,后跟html,我的数据在哪里

$.post(
    "{{request.route_url('home')}}", 
    {'data': 'HelloWoRld'} 
);
<body>"${content}"</body>

这给了我错误

raise KeyError("No key %r: %s" % (key, self.reason))
KeyError: "No key 'data': Not a form request"

我不想要任何表格并在此处提交按钮。传递的数据可以是任何东西。从文件到变量只是一个偏好。并且可能通过按钮点击发生。 我希望有更好/更正确的方式在视图和模板之间来回传递信息?有人可以指点我正确的方向吗?首先十分感谢。

1 个答案:

答案 0 :(得分:0)

经过一番研究和辛劳之后,我找到了实现这一目标的方法。 在我的模板中,我有这个ajax方法发布数据,如下所示

$.ajax({     
    type: "POST",
    url: "/home",
    data: {contents:myvar},
    cache: false,
    success: function(result) {
        alert("Success!");
} });

然后在我的views.py中获取发布的变量,如下所示:

viewcontents=request.POST.get('contents')

这是将数据从模板传递到视图的一种很好的工作方式。我们欢迎任何其他方法来实现这一目标。 :)