3
respostas

404 Not Found

Pessoal, tudo bem? Estou no curso de Flask parte 01: aula 06. Quando entro no endereço : http://127.0.0.1:5000/login o codigo funciona normalemente. Quando coloco meu login e senha ele da o seguinte erro:

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

Como resolver isso?

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

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', 'Acao','SNES')
jogo2 = Jogo('Pokemon','RPG','GBA')
lista = [jogo1,jogo2]

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

@app.route('/novo')
def novo():
    if 'usuario_logado' not in session or session['usuario_logado'] == None:
        return redirect('/login?proxima=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('/')

@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 '123456' == request.form['senha']:
        session ['usuario_logado'] = request.form['usuario']
        flash(request.form['usuario'] + ' logou com sucesso!')
        proxima_pagina =  request.form['proxima']
        return redirect('/ {}'.format(proxima_pagina))
    else :
        flash('Não logado, tente de novo!')
        return redirect ('/login')

@app.route('/logout')
def logout():
    session['usuario_logado'] = None
    flash('Nenhum usuário logado!')
    return redirect('/')

app.run(debug=True)



login.html



{%  extends 'template.html' %}
{% block conteudo %}

<div class="container">
    <br>

    {% with messages = get_flashed_messages() %}
        {% if messages %} 
            <ul id="messages" class="list_unstyled">
            {% for message in messages %}
                <li class="alert alert-success">{{ message }}</li>
            {% endfor %}
            </ul>
        {% endif %}
    {% endwith %}


    <h1>Faça seu login</h1>
    <br>
    <div class="form-group col-md-6 col-xs-4">
        <form method="POST" action="/autenticar">
            <input type="hidden" name="proxima" value= "{{ proxima or '/' }}">
            <p><label>Nome de usuário:</label> <input class="form-control" type="text" name="usuario" required></p>
            <p><label>Senha:</label> <input class="form-control" type="password" name="senha" required></p>
            <p><button class="btn btn-primary" type="submit">Entrar</button></p>
        </form>
    </div>
</div>

{% endblock %}


3 respostas

Oi Marcos, tudo bom?

Estranho mesmo, olhando o código aqui parece tudo OK. O formulário aponta pra rota com POST e a rota é definida como POST. Já tentou tirar a virgula a mais, pra garantir ?

@app.route('/autenticar', methods=['POST'])
ao invés de
@app.route('/autenticar', methods=['POST',])

Tenta limpar o cache da aplicação também. As vezes ajuda =)

Nao funcionou. vou colocar os outros arquivos para ver se ajuda.

insira seu código aqui

lista.html

        {% extends 'template.html' %} 
        {% block conteudo %}
            <table class="table table-striped table-responsive table-bordered">

            <thead class="thead-default ">
                <br>
                <tr>
                    <th>Nome</th>
                    <th>Categoria</th>
                    <th>Console</th>                   
                </tr>
            </thead>

            <tbody>

                {% for jogo in jogos %}
                    <tr>
                        <td>{{ jogo.nome }}</td>
                        <td>{{ jogo.categoria }}</td>
                        <td>{{ jogo.console }}</td>
                    </tr>
                {% endfor %}

            </tbody>
        </table>

        {% endblock %}

novo.html

{% extends 'template.html' %}
{% block conteudo  %}

  <form action="/criar" method="POST" >
    <fieldset>
      <div class="form-group col-md-6 col-xs-4">
        <br>
        <label for="nome">Nome</label>
        <input type="text" id="nome" name="nome" class="form-control">
      </div>
      <div class="form-group col-md-6">
        <label for="categoria">Categoria</label>
        <input type="text" id="categoria" name="categoria" class="form-control">
      </div>
      <div class="form-group col-md-6">
        <label for="console">Console</label>
        <input type="text" id="console" name="console" class="form-control">
      </div>
      <button type="submit" class="btn btn-primary">Salvar</button>
    </fieldset>
  </form>

{% endblock %}

tamplate.html

    <div class='container'>

        {% with messages = get_flashed_messages() %}
          {% if messages %} 
            <ul id="messages" class="list_unstyled">
            {% for message in messages %}
              <li class="alert alert-success">{{ message }}</li>
            {% endfor %}
            </ul>
          {% endif %}
        {% endwith %}

        <div class="page-header">
            <br>
            <h1>{{titulo}}</h1>
        </div>

        {% block conteudo %}
        {% endblock %}

    </div>


    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>    

Alguem pode ajudar????????

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software