用户在配置文件页面中进行了身份验证(重定向到配置文件页面),但未记录在不同的页面中

时间:2015-12-03 14:08:17

标签: django

我正在使用Userena,我设置了所有可以注册/登录/更改我的个人资料的内容..但是一旦我离开个人资料页面,我就会自动退出或者似乎从未登录过。

看起来这可能有些不对劲吗? 这是来自base.html,我把它传递给索引html但是在索引html里面,没有登录。

  {% load static %}
{% load i18n static %}
{% load url from future %}
 {% if user.is_authenticated %}
     <li><a href="/accounts/signout">Logout</a></li>
     <li><a href="{% url 'add_category' %}">Add a new Category</a></li>
    {% else %}
    <li><a href="/accounts/signup/">Register Here</a></li>
    <li><a href="/accounts/signin/">Login</a></li>
    {% endif %}

我不知道在哪里看,请帮忙

我的views.py索引

#for front page
def index(request):

    categories = Category.objects.order_by('likes')[:5]
    latest_posts = Post.objects.all().order_by('-created_at')
    popular_posts = Post.objects.all().order_by('-views')
    hot_posts = Post.objects.all().order_by('-score')[:25]

    t = loader.get_template('main/index.html')
    context_dict = {
        'latest_posts' :latest_posts,
        'popular_posts' :popular_posts,
        'hot_posts' :hot_posts,
        'categories':categories
}
    c = Context(context_dict)
    return HttpResponse(t.render(c))

1 个答案:

答案 0 :(得分:1)

只有{{ user }}包含在模板上下文中时,才会在模板中包含{% user.is_authenticated %}user。您可以在视图中明确添加它,

    context_dict = {
        'latest_posts': latest_posts,
        'popular_posts': popular_posts,
        'hot_posts': hot_posts,
        'categories': categories,
        'user': request.user,
    }
    c = Context(context_dict)
    return HttpResponse(t.render(c))

或者您可以使用render快捷方式,该快捷方式负责加载模板并为您呈现。

from django.shortcuts import render

def index(request):

    categories = Category.objects.order_by('likes')[:5]
    latest_posts = Post.objects.all().order_by('-created_at')
    popular_posts = Post.objects.all().order_by('-views')
    hot_posts = Post.objects.all().order_by('-score')[:25]

    context_dict = {
        'latest_posts': latest_posts,
        'popular_posts': popular_posts,
        'hot_posts': hot_posts,
        'categories': categories
    }
    return render(request, 'main/index.html', context_dict)

如果您使用渲染快捷方式,则需要确保'django.contrib.auth.context_processors.auth'设置中包含^[^\(]*\(([^;\)]+) (它包含在默认生成的设置文件中)。