• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

HecKel

[django] Problema com a função login

3 mensagens neste tópico

Boas!

Na minha aplicação tenho a seguinte view:

def login(request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        
        user = authenticate(username=username, password=password)
        if user is not None:
            if user.is_active:
                from django.contrib.auth import login
                login(request, user)
                return HttpResponseRedirect('/forum/profile/') # Redirect after POST
            else:
                return HttpResponseRedirect('forum/login/') # Redirect after POST
        else:
            return render_to_response('forum/login.html')
    else:
        return render_to_response('forum/login.html')

Tenho ali o seguinte import pelo meio:

from django.contrib.auth import login

Porque raio não posso meter isto como um import global? Se meto como global, dá-me erro..., diz que a função login espera apenas por 1 parâmetro e que estou a enviar 2, no entanto se fizer como tenho aqui funciona-me..., mas...

Mas não consigo ter o login a funcionar devidamente, tenho um menu com este código:

(...)
<div id="menu">
	<ul>
		<li><a href="/">Home</a></li>
            {% if user.is_authenticated %}
            <li><a href="/accounts/profile/">Perfil</a></li>
		<li><a href="/forum/">Fóruns</a></li>
            {% endif %}
		<li><a href="#">Menu 3</a></li>
		<li><a href="#">Menu 4</a></li>
		<li><a href="#">Menu 5</a></li>
	</ul>
</div>
{% block content %}{% endblock %}
(...)

Este menu aparece-me em todas as páginas, é um ficheiro à parte em que apenas mete para ali o "content" de cada uma das outras templates. Foi a forma que arranjei para evitar a redundância de menus e para poder gerir mais facilmente os menus (basta-me alterar um ficheiro).

No entanto, mesmo após o login efectuado continuo sem conseguir ver as opções do menu, porquê?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenho ali o seguinte import pelo meio:

from django.contrib.auth import login

Porque raio não posso meter isto como um import global? Se meto como global, dá-me erro...

Dá conflito com os nomes das funções não? A login que importas e a login que estás a definir.

Quanto ao resto não percebi direito qual era a dúvida. O menu não aparece?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esqueci-me de avisar que isso já está resolvido :D

Sim, era conflito com o nome, e quanto ao menu faltava-me passar a informação das variáveis globais, daí dar problemas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora