Django模板没有收到变量

时间:2013-08-05 10:22:31

标签: python django-templates django-views

我正在编写一个django模板Configuration_Detail.html,它在相关的网址上正确呈现。但是,它不会从视图类中获取任何变量。我有一个非常相似的模板Configuration_List.html虽然工作正常,但ListView不是DetailView

Configuration_Detail.html:

{% extends "base.html" %}

{% load i18n %}

{% block title %}{% trans 'MySite Database' %}{% endblock %}

{% block branding %}
<h1 id="site-name">{% trans 'MySite Database: Current Instrumentation Configuration' %}</h1>
{% endblock %}

{% block content %}
Here is some text {{name}} with a variable in the middle.
{% endblock %}

页面呈现标题栏正常,但内容块变为“这是一些中间有变量的文本”。 我认为它应该从这里获取变量{{ name }}

views.py:

class ConfigurationDetail(DetailView):
model = Configuration    
def getname(self):
    name = 'debug'
    return name

但它不...... 任何关于如何解决这个问题的建议都将非常感激。

编辑添加: Models.py - 配置:

class Configuration(models.Model):

title = models.CharField(max_length=100,unique=True,blank=False)
author = models.ForeignKey(User)  
created = models.DateField("date created",auto_now_add=True)
modified = models.DateField("date modified",auto_now=True)
description = models.CharField(max_length=512)
drawing =  models.ForeignKey(Drawing,blank=True,null=True)
instruments = models.ManyToManyField(Instrument)

def __unicode__(self):
    return self.title

get_context_data()方法正在使用ctx['author'] = Configuration.author

2 个答案:

答案 0 :(得分:0)

对于DetailView,在上下文中添加object变量,该变量指向要为其呈现视图的数据库对象。所以在你的模板中你可以这样做:

{% block content %}
   Here is some text {{ object.author.get_full_name }}
   with a variable in the middle.
{% endblock %}

get_full_name方法来自User对象。

答案 1 :(得分:0)

如果我理解正确,你需要从模板中访问模型属性,但是这样就足以在不修改上下文数据的情况下进行{{ configuration.author }}

DetailView将所选模型置于上下文中,可通过点表示法访问。