处理从数据库传递到模板的数据(Django)

时间:2017-10-07 07:00:15

标签: python django templates variables templatetags

我还是Django的新手,所以我真的希望能解释我需要做什么。

我有一个表单,用户输入有关字符的信息,然后将其存储在数据库中并在页面上显示。

我知道用模板变量调用(即{{character.gender}})很容易调用和显示这些数据,但是,我试图使用输入的数据根据​​数据创建其他变量在它进入模板之前。

我之前已经在visual basic中完成了这个操作,并且基本上使用了if语句来创建一个新变量来存储信息,然后再将其传回去,但我无法弄清楚如何使用django执行此操作/蟒。

例如,如果用户提供了以下信息:

Name = "Jill"
Age = 23
Gender = "Female"

我希望能够做到这样的事情:

if gender = "female":
    gender_identifier = 'she'

if age < 30:
    youth = "is still very young"

然后能够在模板中执行以下操作:

{{character.name}} is {{character.age}} years old and {{gender_identifier}} {{youth}}!

输出&#34;吉尔今年23岁,她还很年轻!&#34;

我挣扎的是那些if语句需要去的地方以及如何在模板中回忆它们。

我尝试将它们添加到角色模型中,创建它自己的模型,将它放在models.py中,并创建一个不同的.py并且无法让它工作。

另外,我知道可以通过if / then模板标签来完成,但我真的希望尽可能避免这种情况。但是,如果这是解决方案,我可以忍受它。

感谢您提供任何帮助,并在我摸索并尝试解释的同时阅读整个问题!

1 个答案:

答案 0 :(得分:1)

这可以使用Python property decorator来实现。

class Character(models.Model):
   #All the fields declarations 
   .
   .
   .
   @property
   def gender_identifier(self):
       if self.gender == "Female":
           return "she"
   @property
   def youth(self):
       if age < 30:
           return "is still very young"

property的作用是允许您将函数作为对象属性调用。因此,无论何时访问Character.gender_identifier 将调用方法gender_identifier并返回值。

现在,您可以在模板中执行{{Character.gender_identifier}}