UndefinedError:'None'没有属性'user_id'

时间:2015-12-05 07:44:49

标签: python html google-app-engine jinja2 google-cloud-datastore

收到错误:

File "/base/data/home/apps/p~clubs-cs50/1.389022909265479577/templates/my_profile.html", line 11, in top-level template code
    {% if user.user_id() == person.identity %}
UndefinedError: 'None' has no attribute 'user_id'

当我尝试从GAE数据存储区获取我的个人资料信息时的数据。 (我在输入信息方面遇到了类似的问题?我在另一个问题中提出了问题。)

它在某个时间点工作,我不知道是什么打破了它。 :/

控制器:

def get(self):
    people = Person.query()

    user = users.get_current_user()
    if user:
        url = users.create_logout_url(self.request.uri)
        url_linktext = 'Logout'
    else:
        url = users.create_login_url(self.request.uri)
        url_linktext = 'Login'

    template_values = {
        'user': user,
        'people': people
    }
    template= JINJA_ENVIRONMENT.get_template('templates/my_profile.html')
    self.response.write(template.render(template_values))

模板:

{% for person in people %}
  {% if person.name %}
    {% if user.user_id() == person.identity %}
      <h1>!!!!!!!!</h1>
    {% endif %}
  {% endif %}
  <br><h3>Name: {{ person.name }}</h3>
  <h3>Email: {{person.email}}</h3>
  <h3>Class Year: {{person.year}}</h3>
  <h3>Bio: {{person.bio}}</h3>
{% endfor %}

(其中!!!! s暗示它是用户的信息,现在显示其他人的BIOS。)

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:1)

或许改变这一行:

{% if user.user_id() == person.identity %}

到此:

{% if user and user.user_id() == person.identity %}

答案 1 :(得分:0)

根据Using the Users Service的文档:

  

如果用户已登录您的应用程序,   get_current_user()返回用户的User对象。否则,它   返回无

您的用户似乎还没有登录。