我有一个这样的数据库:
from django.db import models
class User(models.Model):
firstName = models.CharField(max_length=30, blank=False, default=None)
lastName = models.CharField(max_length=30, blank=False, default=None)
email = models.EmailField(max_length=100, blank=False, default=None)
password = models.CharField(max_length=100, blank=False, default=None)
score = models.IntegerField(default=0)
<{1>} views.py
我想发送当前登录的user
并在模板中显示DB的信息。views.py
:
user = User.objects.filter(email=request.POST['email'])
#some code ....
context = RequestContext(request, {
'user': user[0]
})
return HttpResponse(template.render(context))
我的模板:
{% if user %}
Wellcome {{ user.firstName }}
{% endif %}
但在welcome
后我没有看到任何内容。当我使用它时:
{% if user %}
Wellcome {{ user }}
{% endif %}
我看到welcome anonymousUser
我错了?
答案 0 :(得分:2)
您不能使用user
作为上下文变量,因为它与处理器注入上下文的user
对象冲突
django.contrib.auth.context_processors.auth
现在,要解决您的问题,请将user
重命名为user_obj
或更有意义的内容。
答案 1 :(得分:1)
根据您描述的行为,您可能无法从调用过滤器返回任何对象:
user = User.objects.filter(email=request.POST['email'])
我会查看从request.POST['email']
返回的值,并确保以数据库中的值作为起点。
此外,您应该知道过滤器函数返回QuerySet而不是User对象。如果要检索唯一的User对象,可以使用get function代替。