Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

NoReverseMatch

Olá!

Após concluir o capítulo 5 ("Selecionando perfis de uma lista"), não estou conseguindo acessar a página principal da aplicação.

Segue meus códigos:

index.html

<!DOCTYPE html>
<html lang="pt-br">
  <head>
    <meta charset="utf-8">
    <title>ConnectedIn</title>
  </head>

  <body>
    <h1>Index</h1>
    {% if keyPerfil %}
      <ul>
        {% for perfil in keyPerfil %}
        <li>
          <a href="{% url 'exibirURL' keyPerfil.id %}">{{keyPerfil.nome}} / {{keyPerfil.email}}</a>
        </li>
        {% endfor %}
      </ul>
    {% else %}
      <p>Nenhum perfil encontrado</p>
    {% endif %}
  </body>

</html>

views.py

from django.shortcuts import render
from perfis.models import Perfil

def index(request):
    return render(request, 'index.html', {'keyPerfil': Perfil.objects.all()})

def exibir(request, perfil_id):
    # necessario receber o parametro perfil_id, passado no urls.py

    perfil = Perfil.objects.get(id=perfil_id)

    return render(request, 'perfil.html', {'keyPerfil': perfil})

urls.py

from django.urls import re_path
from perfis.views import index, exibir

urlpatterns = [
    re_path(r'^$', index, name='indexURL'),
    re_path(r'^perfis/(?P<perfil_id>\d+)$', exibir, name='exibirURL'),
]

O erro em questão:

NoReverseMatch at /
Reverse for 'exibirURL' with arguments '('',)' not found. 1 pattern(s) tried: ['perfis/(?P<perfil_id>\\d+)$']
1 resposta
solução!

olá Thiago, no index.html estamos utilizando a variável perfil para acessar cada perfil na lista de perfis (que no seu código você utilizou a variável keyPerfil ao invés de perfis).

{% if keyPerfil %}
      <ul>
        {% for perfil in keyPerfil %}

Mas na hora de pegar o nome do perfil para mostrar na tela, você está pegando pelo keyPerfil (que está guardando todos os perfis) e não pela variável perfil, veja:

<a href="{% url 'exibirURL' keyPerfil.id %}">{{keyPerfil.nome}} / {{keyPerfil.email}}</a>

Imagino que isto esteja gerando o erro. Tente trocar keyPerfil.id, keyPerfil.nome, keyPerfil.email por perfil.id, perfil.nome e perfil.email e veja se resolve o problema.