1
resposta

TemplateSyntaxError jinja2.exceptions.TemplateSyntaxError: unexpected char '‘' at 84

from flask import render_template, request, redirect
from flask import session, flash, url_for
from jogoteca import app, db
from models import Jogos, Usuarios

@app.route('/')
def index():
    # Consulta todos os jogos ordenados pelo ID usando SQLAlchemy
    lista = Jogos.query.order_by(Jogos.id)

    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(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 = Jogos.query.filter_by(nome=nome).first()

    if jogo:
        flash('Jogo já existente!')
        return redirect(url_for('index'))

    novoJogo = Jogos(nome=nome, categoria=categoria, console=console)
    db.session.add(novoJogo)
    db.session.commit()

    return redirect(url_for('index'))

@app.route('/editar/<int:id>')
def editar(id):
    if 'usuario_logado' not in session or session['usuario_logado'] == None:
        return redirect(url_for('login', proxima=url_for('editar')))

    jogo = Jogos.query.filter_by(id=id).first()
    return render_template('editar.html', titulo='Editando Jogo', jogo=jogo)

@app.route('/atualizar', methods=['POST',])
def atualizar():
    jogo = Jogos.query.filter_by(id=request.form['id']).first()
    jogo.nome = request.form['nome']
    jogo.categoria = request.form['categoria']
    jogo.console = request.form['console']

    db.session.add(jogo)
    db.session.commit()

    return redirect(url_for('index'))


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


@app.route('/autenticar', methods=['POST',])
def autenticar():
    # Consulta um usuário pelo nickname fornecido no formulário
    usuario = Usuarios.query.filter_by(nickname=request.form['usuario']).first()

    if usuario:
        if request.form['senha'] == usuario.senha:
            session['usuario_logado'] = usuario.nickname

            flash(usuario.nickname + ' Logado com SUCESSO!')
            proxima_pagina = request.form['proxima']
            return redirect(proxima_pagina)

    else:
        flash('Usuário não logado')
        return redirect(url_for('login'))


@app.route('/logout')
def logout():
    # Deslogar da Sessão
    session['usuario_logado'] = None
    flash('Logout efetuado com Sucesso!')
    return redirect(url_for('index'))
{% extends "template.html" %}
{% block conteudo %}
        <form method="post" action="{{ url_for(‘criar') }}">
              <fieldset>

              <div class="form-group">
                <label for="nome">Nome</label>
                <input type="text" id="nome" name="nome" class="form-control">
              </div>

              <div class="form-group">
                <label for="categoria">Categoria</label>
                <input type="text" id="categoria" name="categoria" class="form-control">
              </div>

              <div class="form-group">
                <label for="console">Console</label>
                <input type="text" id="console" name="console" class="form-control">
              </div>

              <button type="submit" class="btn btn-primary btn-salvar"> Salvar </button>
              </fieldset>
      </form>

{% endblock %}
{% extends "template.html" %}
{% block conteudo %}
        <form action="{{ url_for(‘atualizar') }}" method="post" >
              <fieldset>
                  <input type="hidden" name="id" value="{{ jogo.id }}">
                  <div class="form-group">
                    <label for="nome">Nome</label>
                    <input type="text" id="nome" name="nome" class="form-control" value="{{ jogo.nome }}">
                  </div>

                  <div class="form-group">
                    <label for="categoria">Categoria</label>
                    <input type="text" id="categoria" name="categoria" class="form-control" value="{{ jogo.categoria }}">
                  </div>

                  <div class="form-group">
                    <label for="console">Console</label>
                    <input type="text" id="console" name="console" class="form-control" value="{{ jogo.console }}">
                  </div>

                  <button type="submit" class="btn btn-primary btn-salvar"> Salvar </button>
              </fieldset>
      </form>

{% endblock %}
1 resposta

Olá Ramon! Como vai?

O erro TemplateSyntaxError jinja2.exceptions.TemplateSyntaxError: unexpected char ‘’ at 84, indica que o problema está relacionado ao uso de caracteres de aspas incorretos no seu template Jinja2.

No seu código, você usou aspas curvas (‘’) ao invés de aspas retas (' ou "). As aspas curvas são geralmente inseridas automaticamente por editores de texto como o Microsoft Word, mas não são reconhecidas corretamente pelo Jinja2 ou pela maioria dos interpretadores de código.

Para resolver esse problema, você deve substituir todas as aspas curvas pelas aspas retas. Por exemplo, no seu template, você tem:

<form method="post" action="{{ url_for(‘criar') }}">

Você deve corrigir para:

<form method="post" action="{{ url_for('criar') }}">

E faça o mesmo para qualquer outra ocorrência de aspas curvas no seu código dentro dos templates HTML.

Além disso, certifique-se de que todos os outros caracteres no seu código, como aspas duplas e simples, estejam corretos e consistentes para evitar erros similares no futuro.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

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