纯文本的DJANGO模板标签未显示

时间:2019-01-22 16:36:34

标签: html django

我正在制作一个显示问题的应用程序。问题模型具有一个文本字段和一个图像字段。每个问题都有一个模板,该模板存储在我的数据库中的文本字段中。我的问题是,当我想从模型访问图像时,模板标签显示为文本而不是渲染。我的代码:

Sub ZeroLengthString()
    Dim i As Long
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("A2").Value = ""
    ws.Range("A3").Value = Replace("a", "a", "")
    ws.Range("A4").Value = """"
    ws.Range("A6").Value = "'"
    ws.Range("A7").Formula= "=if(1=2/2,"","")"
    ws.Range("B1").Value = "CountA"
    ws.Range("C1").Value = "CountBlank"
    ws.Range("B2:B7").FormulaR1C1 = "=CountA(RC[-1])"
    ws.Range("C2:C7").FormulaR1C1 = "=CountBlank(RC[-2])"

    For i = 2 To 7
        Debug.Print "CountA(A" & i & ") = " & Application.WorksheetFunction.CountA(ws.Range("A" & i))
        Debug.Print "CountBlank(A" & i & ") = " & Application.WorksheetFunction.CountBlank(ws.Range("A" & i))
    Next i
End Sub

这可以正常工作,并且可以完美地呈现html,除了未渲染template标签并且不提供图片url

我希望这是输出:

# question model
class Question(models.Model):
    question_text = models.TextField()
    question_image = models.FileField(upload_to='static/images/questions', blank=true)

# question view
def question(request, question_id):
    question = get_object_or_404(Question, pk=question_id)
    return render(request, 'questiontemplate.html', {'question': question})

# template
{% extends 'base.html %}
{% load static %}

{% autoscape off %}
{{ question.question_text }}
{% endautoscape %}

# in my database:
question.question_text = '<p> some html
                         {{ question.question_image.url }}
                         some html </p>'
question.question_image = 'image.png'

但这是输出:

Some html
static/images/questions/image.png
some html

任何有关如何从数据库文本中呈现模板标签的建议将不胜感激。 感谢您的阅读

1 个答案:

答案 0 :(得分:2)

Django不知道您的模型字段中的内容本身就是模型。模板不知道这一点。进行此工作的唯一方法是将该字段本身视为模板,然后手动进行渲染。

您可以使用模型上的方法来做到这一点:

L = ['$', 'CAD']
search_str = '|'.join(map(re.escape, L))
df = df[df['Price'].str.contains(search_str)]

现在您可以在模板中调用它:

from django.template import Template, Context

class Question(models.Model):
    ...
    def render_question(self):
        template = Template(self.question_text)
        context = Context({'question': self})
        rendered = template.render(context)
        return mark_safe(rendered)