2016-03-21 47 views
1

我試圖在網頁中打印文件的內容。我想在單獨的行上打印文件中的每一行,但是缺少換行符。如何打印文件並保留換行符?保留與Jinja呈現爲HTML的文件中的換行符

@app.route('/users') 
def print_users(): 
    v = open("users.txt","r").read().strip() 
    # also tried: 
    # v = open("users.txt","r").read().strip().split('\n') 
    return render_template('web.html', v=v) 
{{ v|safe}} 
+0

使用'readlines()'獲取行列表 –

+0

但是如何分別打印每行?任何代碼示例? – chahra

+0

把一個for循環放在你的html中 –

回答

2

您可以使用:

v = open("users.txt","r").readlines() 
v = [line.strip() for line in v] 

,然後在你的HTML類似(但隨意玩弄它):

<form action="/print_users" method="post" >  
        <div class="form-inline"> 

        {% for line in v %} 
         <div>{{ line|safe}}</div> 
        {% endfor %} 


    <input class="btn btn-primary" type="submit" value="submit" > 
       </div> 

        </form> 
+0

這個工程!謝謝! – chahra

0

而其他的答案給予偉大的技術和當前接受的解決方案的作品,我需要做一個類似的任務(呈現一個文本電子郵件模板),但需要延長t他在文件中保留宏的處理,這使我創建了我認爲最簡單和最優雅的解決方案 - 使用render_template_string。

def show_text_template(template_name): 
    """ 
    Render a text template to screen. 
    Replace newlines with <br> since rendering a template to html will lose the line breaks 
    :param template_name: the text email template to show 
    :return: the text email, rendered as a template 
    """ 
    from flask import render_template_string 

    txt_template = open(
     '{}/emails/{}{}'.format(app.config.root_path + '/' + app.template_folder, template_name, '.txt'), 
     "r").readlines() 

    return render_template_string('<br>'.join(txt_template))