我正在制作一个显示问题的应用程序。问题模型具有一个文本字段和一个图像字段。每个问题都有一个模板,该模板存储在我的数据库中的文本字段中。我的问题是,当我想从模型访问图像时,模板标签显示为文本而不是渲染。我的代码:
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
任何有关如何从数据库文本中呈现模板标签的建议将不胜感激。 感谢您的阅读
答案 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)