1
resposta

Not Found - Redirecionamento para página / /

Pessoal,

Quando faço login sou direcionado para a seguinte URL:

http://127.0.0.1:5000/ /

Um espaço e uma barra são inseridos automaticamente. Em consequência eu recebo um 404:

Not Found

The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.

Código Python:

from flask import Flask, render_template, request, redirect, session, flash, url_for

app = Flask(__name__)
app.secret_key = 'alura'


class Jogo:
    def __init__(self, nome, categoria, console):
        self.nome = nome
        self.categoria = categoria
        self.console = console


jogo1 = Jogo('Super Mario', 'Aventura', 'Super Nintendo')
jogo2 = Jogo('Pokémon Gold', 'RPG', 'Game Boy')
jogo3 = Jogo('Mortal Kombat', 'Luta', 'Super Nintendo')
lista = [jogo1, jogo2, jogo3]


@app.route('/')
def index():
    return render_template('lista.html', titulo='Jogos', jogos=lista)


@app.route('/novo')
def novo():
    if 'usuario_logado' not in session or not session['usuario_logado'] == None:
        return redirect(url_for('login', proxima=url_for('novo')))
    return render_template('novo.html', titulo='Novo Jogo')


@app.route('/criar', methods=['POST',])
def criar():
    nome = request.form['nome']
    categoria = request.form['categoria']
    console = request.form['console']
    jogo = Jogo(nome, categoria, console)
    lista.append(jogo)
    return redirect(url_for('index'))


@app.route('/login')
def login():
    proxima = request.args.get('proxima')
    return render_template('login.html', proxima=proxima)


@app.route('/autenticar', methods=['POST',])
def autenticar():
    if 'mestra' == request.form['senha']:
        session['usuario_logado'] = request.form['usuario']
        flash(request.form['usuario'] + ' logou com sucesso!')
        proxima_pagina = request.form['proxima']
        return redirect(proxima_pagina)
    else:
        flash('Não logado! Tente novamente.')
        return redirect(url_for('login'))


@app.route('/logout')
def logout():
    session['usuario_logado'] = None
    flash('Usuario deslogado')
    return redirect(url_for('index'))


app.run(debug=True)

Alguém, gentilmente, consegue me ajudar?

1 resposta

Oi Erick, tudo bom?

Se você consegue chegar até o processo de autenticação e enviar a requisição de login, na teoria seu problema está nessa linha aqui:

        return redirect(proxima_pagina)

Tenta verificar o que está sendo passado pela variável proxima_pagina que vem do request:

        proxima_pagina = request.form['proxima']

Verifica se o conteúdo não é " /".

Se for, compartilha com a gente a view que manda essa requisição e quem preenche essa variável =)

Abraço!