如何保持用户登录Django

时间:2018-08-14 20:47:22

标签: python django django-tables2 django-filters

我在应用程序中登录了。然后,我转到列出数据库中所有用户的屏幕。当我选择一个指定的用户时,我丢失了登录的用户。那么,如何在所有应用程序中保留我的用户?

列出所有用户的My views.py。这一次,该网址显示了我的用户(http://localhost:8000/os/acesso/consultausuario/9

$scope.sharedObj = CartProduct.sharedObj;

我的filters.py

def acesso_consultausuario(request, id=None):

    instance = get_object_or_404(usuario, id=id)

    queryset = usuario.objects.all().order_by('dat_criacao_usuario')
    instancia_usuario_filter = usuariofilter(request.GET, queryset=queryset)

    table = usuariotable(instancia_usuario_filter.qs)

    RequestConfig(request, paginate={'per_page': 25}).configure(table)

    paginator = Paginator(instancia_usuario_filter.qs, 5)
    page = request.GET.get('page')

    try:
        response = paginator.page(page)
    except PageNotAnInteger:
        # if page is not an integer, deliver first page
        response = paginator.page(1)
    except EmptyPage:
        # if page is out of range, deliver last pages of results
        response = paginator.page(paginator.num_pages)

     context = {
        "instance": instance,
        "filter": instancia_usuario_filter,
        "response": response,
        "table": table,
    }
    return render(request, 'consulta/consulta_usuario.html', context)


# Show an especified user that I selected before.
def acesso_consultausuariodetalhe(request, id=None):

    # Instância do usuário que foi selecionado na consulta
    instance = get_object_or_404(usuario, id=id)

    form = statususuarioForm(request.POST or None)

    if form.is_valid():  # All validation rules pass

        instance_status = form.save(commit=False)
        var_status = form.cleaned_data['statususuario']
        instance_status = statususuario.objects.get(desc_statususuario=var_status)


        # Salva o status atual na tabela logstatususuario
        instance_log = logstatususuario.objects.create(usuario = instance,
                                                        statususuario = instance_status)
        instance_log.save()

        # Seleciona o grupo de acesso
        #var_grupo = form.cleaned_data['grupo']
        #instance_grupo = grupo.objects.get(desc_grupo=var_grupo)

        # Atualiza o usuário com o novo status
        instance.statususuario = instance_status
        #instance.grupo = instance_grupo
        instance.save()

    context = {
        "instance": instance,
        "form": form,
    }

    return render(request, 'consultadetalhe/consulta_usuariodetalhe.html', context)

2 个答案:

答案 0 :(得分:3)

对于登录用户,您可以使用以下代码:

from django.contrib.auth import authenticate, login

def my_view(request):
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(request, username=username, password=password)
    if user is not None:
        login(request, user)
        # Redirect to a success page.
        ...
    else:
        # Return an 'invalid login' error message.
        ...

用户登录后,该用户的ID和用于身份验证的后端将保存在该用户的会话中

现在已成为访问登录用户,您只需使用 request.user

ref:Django Documentation

答案 1 :(得分:0)

在您的views.py中,您可以像这样访问登录的用户:

    from django.contrib.auth.models import AnonymousUser

    def acesso_consultausuario(request):
        my_user = request.user
        #If you want to know if the user is logged in
        is_user_logged = my_user.is_authenticated

顺便说一句,我也是一位讲西班牙语的人,但是用英语编写所有代码是一个好习惯,这样您就可以与世界分享并获得反馈(甚至是变量名)。 希望这会有所帮助!