繁体   English   中英

附加到response.out.write的不需要的模板代码

[英]Unwanted template code attached to response.out.write

我坚持尝试创建可下载的内容。 我正在使用webapp2.RequestHandler并且出现以下情况:

  1. 我正在使用Jinja 2创建带有“以csv格式下载”链接的页面。
  2. 当您单击链接时,文件将正确下载,并以正确的内容开头,最后它已添加了模板内容。

这是我的课:

class xmlAnalyzer(Handler):
    def get(self):
        displaySample = self.request.get('SamplePage')
        downloadMapping = self.request.get('downloadMapping')

        if downloadMapping:
            r = self.request.get('srcTgtMapping')
            srcTgtMapping = r.split('], [')

            csvContents = 'Column name; Source name; Source type; Column name; Target name; Target type;\n'
            self.response.headers['Content-Disposition'] = 'attachment; filename=' + str(downloadMapping) +'.csv'
            self.response.out.write(csvContents)

        elif displaySample == '2':
            testString = 'abracadabra'
            self.response.headers['Content-Disposition'] = 'attachment; filename=' + 'testFile.csv'
            self.response.write(testString)

现在,尽管第二种情况可以正常工作(如果提供了SamplePage=2参数),则文件仅包含单词“ abracadabra”。 但是,在第一种情况下,下载的文件如下所示:

Column name; Source name; Source type; Column name; Target name; Target type;
<!DOCTYPE html>

<link rel="stylesheet" type="text/css" href="/stylesheets/styles.css">
<Content-Type: text/html; charset=utf-8>
<html>
<body class="body">

<div class="main-title">Welcome to XML Analyzer for Informatica PowerCenter</div>

第一行是我所期望的。 但是,仅此而已。 剩下的就是模板-知道为什么要添加它吗? 提前致谢!

很难说,但是凭直觉,根据您显示给我们的代码来决定,我想可能是...

  • 与第一个if块中的self.response.out.clear()有关,第二个不包含它;
  • 或通过webapp2框架自动呈现模板; 但这并不能解释为什么这两种情况的行为有所不同,所以这让我注意到了self.response.out.clear()调用。

PS ,顺便说一句,您确定您已经向我们展示了代码的所有相关部分吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM