我正在尝试向我的站点添加功能,该站点的某些部分只能由确认其电子邮件帐户的用户使用。
我找到了解决方案,但是没有用。 这是我所做的: 建议我为此添加一个单独的模型:
class account_emailconfirmation(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
@property
def has_verified_email(self):
return self.user.emailaddress_set.filter(verified=True,primary=True).exists()
这是模板的样子:
{% extends "main/header.html" %}
{% if user.account_emailconfirmation.has_verified_email %}
{% block content %}
<style>
</style>
<body>
<div> <p>Here goes a bunch of features</p> </div>
</body>
{% endblock %}
{% else %}
<p> Your email is ot confirmed </p>
{% endif %}
但是它不起作用,因为即使不用确认我的电子邮件也可以看到该页面。
这是我的数据库的样子:
有一个名为account_emailconfirmation
的表,然后有一个索引verified
,该索引在未验证帐户时将提供0
,在验证帐户时将提供1
任何建议都值得赞赏!
答案 0 :(得分:1)
您需要使用account_emailconfirmation.user
一对一字段的related_name
属性
{% if user.account_emailconfirmation.has_verified_email %}
旁注,您应该将课程大写:
class EmailConfirmation(models.Model):
我假设account_
部分用于该应用程序。您不需要它,您知道模型在哪个应用程序中。
答案 1 :(得分:1)
写下:
{% extends "main/header.html" %}
{% block content %}
{% if user.profile.has_verified_email %}
<style>
</style>
<body>
<div> <p>Here goes a bunch of features</p> </div>
</body>
{% else %}
<p> Your email is ot confirmed </p>
{% endif %}
{% endblock %}