【问题标题】:Displaying python str values in django templates在 django 模板中显示 python str 值
【发布时间】:2020-06-06 07:13:22
【问题描述】:

我试图在 html 模板中显示来自视图的字符串项。 当我使用列表标签时,无法获取整个单词,而是单词被拆分并且每个字母都出现在新行中

例如我的列表包含 - bfast= ['无糖红茶','蔬菜','希腊酸奶'] 午餐 = ['海鲜', '所有蔬菜']

html-

 Breakfast:<br>
                {% for item in bfast %}
                      <li>{{ item|safe }}</li>
                {% endfor %}<br>
            <br>

输出是新行中的每个字母

如果我删除列表标签 -

Lunch:<br>
                {% for item in lunch %}
                    {{ item|safe }}
                {% endfor %}<br>

输出是每个字母,如下所示- 午餐: [ ' S e a F o o d ' , ' A l l V e g e g e t a b l e s ' ]

如何获得正确的单词显示?

观看次数-

def dietplan(request, email_id):
    patient = get_object_or_404(PatientBasicInfo, pk=email_id)
    patientdiet = get_object_or_404(PatientMenu, pk=email_id)

    bfast = patientdiet.breakfast
    lunch = patientdiet.lunch
    snack = patientdiet.snack
    dinner = patientdiet.dinner

    return render(request, 'EDApp/diet.html', {'emailid': email_id,'bfast': bfast, 'lunch': lunch, 'snack': snack, 'dinner': dinner}) 

【问题讨论】:

  • 它是一个列表,还是一个字符串,乍一看,它看起来像是一个包含['Sugar...]作为内容字符串,不是包含字符串的列表。
  • 对不起,它是一个字符串 - L ['Sea Food', 'All Vegetables']。我怎样才能让它在 html 中正确打印?
  • 您无权访问原始列表?能否请您提供该视图的相关详细信息?
  • @Willem Van Onsem,更新了观点。这些值来自之前视图中表单的多选选择,然后存储在数据库中并在此函数中调用以显示结果
  • 看来您没有正确存储值,通常此类列表通过ForeignKeyManyToManyField 相关的额外模型存储。

标签: python html django-views django-templates


【解决方案1】:

通过使用 ast 模块解决了这个问题,将视图更改为 -

bfast = ast.literal_eval(patientdiet.breakfast) #patientdiet.breakfast
    lunch = ast.literal_eval(patientdiet.lunch)
    snack = ast.literal_eval(patientdiet.snack)
    dinner = ast.literal_eval(patientdiet.dinner)

【讨论】:

    猜你喜欢
    • 2017-02-16
    • 2016-09-14
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多