我继承了一个Django项目进行维护,尽管已经完成了这个教程,但是当我涉及所有这些项目代码并且很快就会普遍缺乏理解时,我感到有点迷茫。当我点击模板时。
我有一个名为Student的模型,定义为
class Student(models.model);
True
studentID = models.CharField(max_length = 6, primary_key = True)
age = models.IntegerField()
以及为简洁而省略的其他一些字段。
现在,我有一个网页的HTML文件,我想在其上显示当前学生的分数(当前学生被定义为当前访问该页面的学生,由他们的学生ID标识) 在views.py中,我通过
获得了当前的学生currentStudent = Student.objects.get(studentID = request.session['studentID'])
我的问题:在我的HTML文件中,如何在文本块的一部分中显示当前学生的年龄?
答案 0 :(得分:3)
Django获取你的html文件并填充空白。
你告诉它空白在哪里使用双括号{{ somevar }}
或许多内置标签之一(例如'for'),它们看起来像这个{% sometag %}
。学习如何使用它并学习所有选项(the docs are great)需要一些时间,但是很容易理解基础知识。以下是一些例子:
views.py
def example(request):
template = 'index.html'
context = {'myvar': 'hello world'}
return render_to_response(template, context)
的index.html
<body>
<h1> {{ myvar }} </h1>
</body>
结果:
<body>
<h1> hello world </h1>
</body>
如您所见,render_to_response采用模板名称,然后填充空白。它需要index.html,查看上下文字典,找到{{ myvar }}
的每个外观,并用hello world
替换它。
假设我有一个名为MyModel
的模型,其中包含字段MyData
?要显示它,只需使用上下文发送它:
def example(request):
template = 'index.html'
context = {'myvar': MyModel.objects.get(pk=1)}
return render_to_response(template, context)
的index.html
<body>
<h1> {{ myvar.MyData }} </h1>
</body>
第二个例子:
views.py
def example_fortag(request):
template = 'fortag.html'
context = {'mylist': [1, 2, 3]}
return render_to_response(template, context)
fortag.html
<body>
{% for item in mylist %}
<h1>{{ item }}</h1>
{% endfor %}
</body>
结果如下:
<body>
<h1>1</h1>
<h1>2</h1>
<h1>3</h1>
</body>
得到它?以下是使用if标记的示例:
views.py:
def example_iftag(request):
template = 'iftag.html'
context = {'mylist': range(1, 10)}
return render_to_response(template, context)
iftag.html:
<body>
{% for item in mylist %}
{% if item / 2 == 0 %}
<h1>{{ item }}</h1>
{% endif %}
{% endfor %}
</body>
结果如下:
<body>
<h1>2</h1>
<h1>4</h1>
<h1>6</h1>
<h1>8</h1>
</body>
你也可以做复杂的事情。假设您将字典作为变量发送:
context = {'myvar': {'key': 'value'}}
你可以这样做:
{% for key, value in myvar.items %}
... etc ...
请参阅?我正在使用items函数,它是python语言中字典对象的内置函数(注意我不需要用()
调用函数)。
考虑到所有这些,我强烈建议你再一次过third part of the tutorial并慢慢捡起来。 Django的模板语言非常直观且非常强大,希望这很有用
答案 1 :(得分:2)
首先,您需要将该变量传递给上下文中的模板。但如果它已经存在那么类似
{{ currentStudent.age }}
可以正常使用