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

时间:2013-10-01 08:55:10

标签: python attachment webapp2

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

  1. 我正在使用Jinja 2创建一个“以csv下载此链接”的页面。
  2. 当您点击该链接时,文件会正确下载,以正确的内容开头,最后会添加模板内容。
  3. 这是我的班级:

    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>
    

    第一行是我的期望。但这应该是全部。其余的是模板 - 任何想法为什么这会被添加?提前谢谢!

1 个答案:

答案 0 :(得分:0)

很难说,但直觉上,根据你向我们展示的代码来决定,我猜它要么......

  • 与第一个self.response.out.clear()区块中的if有关 - 第二个没有;
  • 或webapp2框架自动模板呈现;但这并不能解释为什么这2个案例表现不同,所以这就是让我注意到self.response.out.clear()来电的原因。
顺便说一下,

P.S。,您确定已向我们展示了代码中的所有相关内容吗?