我还是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模板标签来完成,但我真的希望尽可能避免这种情况。但是,如果这是解决方案,我可以忍受它。
感谢您提供任何帮助,并在我摸索并尝试解释的同时阅读整个问题!
答案 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}}