django DetailView显示用户的错误信息

时间:2014-04-11 14:30:10

标签: django django-templates django-users detailview

我使用syncdb创建了一个超级用户,但是当我在详细视图中使用{{ object.email }}时,我得到了" True"而不是电子邮件值。

但是当我使用shell时,会显示正确的值。

在我看来:

  class UserDetail(DetailView):
    model = User
    template_name = 'myapp/user/detail.html'

    @method_decorator(login_required)
    def dispatch(self, *args, **kwargs):
        return super(UserDetail, self).dispatch(*args, **kwargs)

    def get(self, request, *args, **kwargs):
        self.object = self.get_object()

        if request.user.is_superuser or request.user.pk == self.object.pk:
            return super(UserDetail, self).get(request, *args, **kwargs)
        else:
            raise PermissionDenied

    def get_success_url(self):
        return reverse('cleb:user-detail', kwargs={'pk': self.object.id})

在我的模板中:

<dl class="dl-horizontal">
    <dt>{% trans 'Username' %}</dt><dd>{{ object.username }}</dd>
    <dt>{% trans 'First name' %}</dt><dd>{{ object.first_name }}</dd>
    <dt>{% trans 'Last name' %}</dt><dd>{{ object.last_name }}</dd>
    <dt>{% trans 'Email address' %}</dt><dd>{{ object.email }}</dd>
    {% if user.is_superuser %}
    <dt>{% trans 'Is Superuser' %}</dt><dd>{{ object.is_superuser }}</dd>
    <dt>{% trans 'Is Active' %}</dt><dd>{{ object.is_active }}</dd>
    {% endif %}
</dl>

任何帮助都将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

而不是:

return super(UserDetail, self).get(request, *args, **kwargs)

我会用:

 return render(request, self.template_name, {
        'object': self.object,
 })

我认为没有必要打电话给超级,对象可能会丢失。什么显示{{object.username}}?