它在锡上的内容:我希望能够访问:
这需要从模板标签中访问。
简而言之,我要做的是使用我的基本模板可以使用的信息来标记视图函数,以配置一些视图框架UI;例如,设置标题,或填充通用帮助对象。如果有人可以提出更好的方法,请随意提供答案。
答案 0 :(得分:2)
这就是模板上下文字典所包含的内容。它应包含“标题,例如,或填充通用帮助对象。”
def myViewFunction( request ):
# whatever
return render_to_response( template,
{ 'title': "Title of this view's page",
'help': someHelpObject, },
'name': 'myViewFunction',
'attribute': 'some attribute of myViewFunction',
)
答案 1 :(得分:2)
是的,当你第一次实现Django时,你有时必须改变你对设计的看法,特别是如果你来自PHP,ColdFusion或其他基于标签的语言,其中许多功能来自在模板中。
简而言之:不要尝试在django模板中实现任何复杂的编程逻辑。 if / then / else和循环几乎是您应该在模板中直接尝试的复杂程度。
基本上有3种方法可以在模板中以编程方式生成输出:
context
)来发送它们。一个简单(虽然不那么有区别)的选项只是发送locals()
,它将发送通过函数内创建的每个变量(以及参数)。most_recent_posts
模型创建了一个函数Author
,则可以使用{% for post in author.most_recent_posts %}
出于您的目的,例如要在页面上创建“帮助对象”,您可能会对称为inclusion tag的特殊自定义标记感兴趣。您将其称为普通自定义标记:{% show_help obj %}
并创建一个用于输出该对象数据的模板。例如,假设您想要实现一个上下文相关的帮助系统,您只是希望它从数据库中提取帮助对象并输出它们。你这样就创建了一个标签:
from help.models import Help
@register.inclusion_tag('/help/help.html')
def show_help(topic):
help = Help.objects.get(topic__iexact=topic)
return {
'help': help
}
然后你会有一个输出帮助内容的模板:
# /help/templates/help/help.html
<div class="help-widget">
<h2>{{ help.title }}</h2>
<p>{{ help.content }}</p>
</div>
在模板中,您可以调用包含标记:
<form><fieldset>Delete Project</fieldset>
...
{% show_help "Deleting Project" %}
</form>
答案 2 :(得分:1)
视图功能在Django中没有任何特殊状态。
模板可以在任何地方呈现:在视图中,在模板标签内,在模型方法中,在实用程序函数中......所以它甚至不清楚您想要访问的内容。但无论如何,一般原则是如果你想要访问模板中的某些东西,你应该把它传递给模板上下文。
答案 3 :(得分:0)
如果你需要传递一些每次重复的上下文,并且每次写入视图时都要在视图的上下文中提及。
使用context_processors可以更好地完成它。此链接将为您提供所需的其他信息。如果有任何查询,可以自由地进行通信。