Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在模型文本字段中使用HTML中的Django模板变量?_Html_Django_Django Models_Django Templates_Django Views - Fatal编程技术网

如何在模型文本字段中使用HTML中的Django模板变量?

如何在模型文本字段中使用HTML中的Django模板变量?,html,django,django-models,django-templates,django-views,Html,Django,Django Models,Django Templates,Django Views,我想以编程方式生成外部URL,而不是用HTML硬编码,以防其中任何一个在某个时候发生变化 在我的模板中,我有这个 <p> {{ article.text|safe }} </p> <a href="{{ external_urls.stack_overflow }}>Stack Overflow</a> 我的观点是这样的 class Article(models.Model): title = models.CharField(max

我想以编程方式生成外部URL,而不是用HTML硬编码,以防其中任何一个在某个时候发生变化

在我的模板中,我有这个

<p>
{{ article.text|safe }}
</p>
<a href="{{ external_urls.stack_overflow }}>Stack Overflow</a> 
我的观点是这样的

class Article(models.Model):
    title = models.CharField(max_length=200)
    teaser = models.TextField(default = "")
    text = models.TextField()
    category = models.CharField(max_length=100)
    image_name = models.CharField(default = "", max_length=100)
    published_date = models.DateField(blank=True, null=True)
class Article_Page(TemplateView):
    model = Article
    template_name="articles/article.html"

    def get_context_data(self, **kwargs):
        context = super(Article_Page,self).get_context_data(**kwargs)
        context['article'] = Article.objects.get(pk=kwargs['pk'])
        context['external_urls'] = External_Urls()
        return context

class External_Urls(object):
    stack_overflow = 'https://stackoverflow.com'
在模型的文本字段中,我有这个

<p>
{{ article.text|safe }}
</p>
<a href="{{ external_urls.stack_overflow }}>Stack Overflow</a> 

如果我直接将该HTML行包含在模板中,则该HTML行将提供指向的链接,但如果它位于model TextField中,则该链接将指向“{external_url.stack_overflow}”

如何在TextField HTML中转义模板变量?

尝试使用

class Article_Page(TemplateView):
    model = Article
    template_name="articles/article.html"

    def get_context_data(self, **kwargs):
        context = super(Article_Page,self).get_context_data(**kwargs)
        context['article'] = Article.objects.get(pk=kwargs['pk'])
        context['external_urls'] = 'https://stackoverflow.com'
        return context
在您的模板中,只需放入
{{external_url}}
,如果您想创建多个URL,可以使用列表或字典,字典的示例如下:

context['external_urls'] = ['url1':'https://stackoverflow.com', 'url2':'https://facebook.com']
在模板中:

{{external_urls.url1}} #return stackoverflow.com
基于此:

class Article_Page(DetailView):
    model = Article
    template_name="articles/article.html"

    def get_context_data(self, **kwargs):
        context = super(Article_Page, self).get_context_data(**kwargs)

        d = {'external_urls':{'stackoverflow.com':'http://www.stackoverflow.com/'}}
        rendered = Template(self.object.text).render(Context(d))

        context['article'] = self.object
        context['article_text_rendered'] = rendered
        return context
然后在HTML中:

<p>
   {{ article_text_rendered }}
</p>

{{文章{文本}}


这里的关键是文本字段中的HTML(即article.text和page_object.text)不能使用与页面相同的上下文,因此您必须首先使用自己的上下文来呈现页面。

您必须在HTML中的属性周围加引号:
href=“{{external_url.stack_overflow}”
。请先解决这个问题,然后更新您的问题:)模板引擎在Quotes中呈现变量的任何方式都不起作用。我不确定您想在这里做什么。您是否将django模板代码保存在模型的
text
字段中?如果要插入正确的链接,必须对文本字段的内容进行模板呈现。这是您要做的吗@阿皮索兰基>肯定会的。问题不在于呈现,问题在于没有引号,你会得到无效的html。浏览器将尝试赋予它一个含义,但您无法确定如何赋予它。我仍然有相同的问题,{{external_url.url1}}当包含在插入django模板的文本字段中时,会被视为字符串,而不是模板变量。作为一个文本字段,您做了什么,它对我有效,可能会将[]替换为{}我的意思是对象来自的模型中的文本字段,我想呈现的文本字段中有HTML。不过,我还是解决了这个问题,在原始帖子中找到了解决方案。