Django:在View中传递参数并显示在页面上

时间:2018-10-12 17:23:27

标签: python html django

说,我在views.py中有2个视图:Fetching_information_viewProcessing_view

Fetching_information_view中,我正在获取"home.html"页面上以表格格式显示给用户的信息。没关系。

现在,我也为每行获得一个CSV URL。我不希望用户单击CSV URL时应打开CSV。相反,当用户单击它时,它应该转到Processing_view,并且应该在另一个HTML页面上投放,例如"process.html"

CSV URL:

/some_bucket/some_csv_file.csv?AWSAccessKeyId=some_id&Expires=1234&Signature=some_signature

所需的URL:

http://example.com/process.html?file=some_bucket/some_csv_file.csv?AWSAccessKeyId=some_id&Expires=1234&Signature=some_signature

现在,如何从Processing_view视图调用Fetching_information_view并发送文件信息?它应该在后端处理并在process.html上显示结果。

这是我在首页上显示的表格:

enter image description here

我已经为我正在使用的views.py编写了示例代码:

def process_data(request):
    # what should come here?
    # Display in process.html


def home(request):
    some_data = SomeTable.objects.filter(user = request.user)
    args = {"some_data": some_data}
    # display as table on home.html, including URLs it is carrying
    return render(request, "home.html", args)

1 个答案:

答案 0 :(得分:2)

如果您不想公开CSV文件的URL,请不要将其添加(也不要公开URL参数)到home视图和模板的上下文中。 / p>

因此,假设您已经为process_view视图创建了名为process_data的urlpattern,则在您的 home.html 模板中,您只需使用href="{{% url 'process_view' %}?id={{ id }}"即可附加对象的id到您请求的URL参数。

然后在process_data视图中,您可以通过id来获得id = request.GET.get('id'),并使用id来获取模型,并重建CSV网址和文件参数。