如何在Django模板中显示模型中的一个字段

时间:2013-12-27 19:51:37

标签: python django

我继承了一个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文件中,如何在文本块的一部分中显示当前学生的年龄?

2 个答案:

答案 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 }}

可以正常使用