2
respostas

Código python não carrega dados

Galera, estou usando o curso como base para fazer um sistema de gestão de moradores. Acontece que quando eu carrego a página onde seria o "index.html", os dados carregam com o código python sem problemas. Quando clico no link que direcionaria para a página http://localhost:8000/receita/4, o conteúdo não carrega. Estou colocando abaixo o código das 2 páginas, ,model, views e urls.

Página 1 (index)

{% extends 'base.html' %}
{% load static %}
{% block content %}

    <!-- Preloader -->
    <div id="preloader">
        <i class="circle-preloader"></i>
        <img src="{% static 'img/core-img/prediocor.png' %}" alt="">
    </div>

    {%  include 'partials/_busca.html' %}

    {%  include 'partials/_menu.html' %}

    <!-- ##### Best Receipe Area Start ##### -->
    <section class="best-receipe-area">
        <div class="container">
            <div class="section-heading">
                <h1>Inquilinos</h1>
            </div>
            <div class="row">

                <!-- Processando dados da view -->
                {% if inquilinos %}
                {% for inquilino in inquilinos %}

                <!-- Single Best Receipe Area -->
                <div class="col-12 col-sm-6 col-lg-4">
                    <div class="single-best-receipe-area mb-30">
                        <div class="receipe-content">
                            <a href="{% url 'pageinquilino' inquilino.id %}">                                
                                <h3>{{ inquilino.nome }}</h3>
                                <h5>Status do cliente<p>{{ inquilino.status_de_pagamentos }}</p></h5>
                                <h5>Tamanho do kitnet <p>{{ inquilino.tamanho_do_kitnet }}</p></h5>
                            </a>                                                    
                        </div>
                    </div>
                </div>
                {% endfor %}
                {% else %}
                {% endif %}
            </div>
        </div>
    </section>
    <!-- ##### Best Receipe Area End ##### -->

    {% include 'partials/_footer.html' %}

{% endblock %}

Página 2 (seria a de receita/1, mas no meu caso se chama 'inquilinos/1

{% extends 'base.html' %}
{% load static %}
{% block content %}

    <!-- Preloader -->
    <div id="preloader">
        <i class="circle-preloader"></i>
        <img src="{% static 'img/core-img/prediocor.png' %}" alt="">
    </div>

    {%  include 'partials/_busca.html' %}

    {%  include 'partials/_menu.html' %}

    <!-- ##### Best Receipe Area Start ##### -->
    <section class="best-receipe-area">
        <div class="container">
            <h1>Página do inquilino</h1>
            <div class="row">
                <p>Cadê os dados daqui?</p>
                <!-- Processando dados da view -->
                {% if pageinquilino %}
                {% for inquilino in pageinquilino %}

                <!-- Single Best Receipe Area -->
                <div class="col-12 col-sm-6 col-lg-4">
                    <div class="single-best-receipe-area mb-30">
                        <div class="receipe-content">
                            <a href="{% url 'pageinquilino' inquilino.id %}">                                
                                <h3>{{ inquilino.nome }}</h3>
                                <h5>Status do cliente<p>{{ inquilino.status_de_pagamentos }}</p></h5>
                                <h5>Tamanho do kitnet <p>{{ inquilino.tamanho_do_kitnet }}</p></h5>
                                <h5>CPF <p>{{ inquilino.cpf }}</p></h5>
                                <h5>Valor do luguel <p>{{ inquilino.valor_do_aluguel }}</p></h5>
                                <h5>Ultimo Pagamento <p>{{ inquilino.ultimo_pagamento }}</p></h5>
                            </a>                                                    
                        </div>
                    </div>
                </div>
                {% endfor %}
                {% else %}
                <div class="col-12 col-sm-6 col-lg-4">
                    <p>Erro ao localizar dados do inquilino.</p>
                {% endif %}
            </div>
        </div>
    </section>
    <!-- ##### Best Receipe Area End ##### -->

    {% include 'partials/_footer.html' %}

{% endblock %}

página index pagina index

pagina 'receitas/1'

pagina 'receitas/1'

2 respostas

views.py

def index(request):
    return redirect('login')

def pageinquilino(request, inquilino_id):
    inquilino = get_object_or_404(Inquilino, pk=inquilino_id)

    inquilino_a_exibir = {
        'inquilinos' : inquilino_id
    }

    return render(request, "pageinquilino.html", inquilino_a_exibir)

urls.py

urlpatterns = [
    path('', views.index, name='index'),
    path('inquilinos/<int:inquilino_id>', views.pageinquilino, name='pageinquilino'),
    path('busca', views.buscar, name='buscar'),
    path('cadastro', views.cadastro, name='cadastro'),
    path('login', views.login, name='login'),
    path('logout', views.logout, name='logout'),
    path('inquilinos', views.inquilinos, name='inquilinos'),
    path('cria_inquilino', views.cria_inquilino, name='cria_inquilino'),
]

models.py

class Inquilino(models.Model):
    nome = models.CharField(max_length=255)
    cpf = models.CharField(max_length=15, unique=True)
    tamanho_do_kitnet = models.CharField(max_length=10, choices=kitnet)
    status_de_pagamentos = models.CharField(max_length=15, choices=status_adimplencia, default='ADIMPLENTE')
    valor_do_aluguel = models.CharField(max_length=255)
    ultimo_pagamento = models.DateField(blank=True)

    def __str__(self):
        return self.nome

Oii Rafael, como você está?

Peço desculpas pela demora em obter um retorno.

Isso está ocorrendo porque no arquivo pageinquilino.html está sendo verificado a existência ou não do inquilino e também, sendo percorrido uma lista de inquilinos, porém, essa verificação e laço de repetição em relação ao objeto inquilino não é necessária, uma vez que clicamos no inquilino na página de index, ou seja, clicamos em um único dado existente, por isso, a verificação é desnecessária. Em resumo, como já sabemos da existência daquele dado, o que queremos é apenas mostrar as informações que foram clicadas. Sendo assim, o código da pageinquilino.html ficará da seguinte forma:

<section class="best-receipe-area">
    <div class="container">
        <h1>Página do inquilino</h1>
        <div class="row">
            <div class="col-12 col-sm-6 col-lg-4">
                <div class="single-best-receipe-area mb-30">
                    <div class="receipe-content">                              
                            <h3>Nome: {{ inquilinos.nome }}</h3>
                            <h5>Status do cliente: {{ inquilinos.status_de_pagamentos }}</h5>
                            <h5>Tamanho do kitnet: {{ inquilinos.tamanho_do_kitnet }}</h5>
                            <h5>CPF: {{ inquilinos.cpf }}</h5>
                            <h5>Valor do aluguel: {{ inquilinos.valor_do_aluguel }}</h5>
                            <h5>Ultimo Pagamento: {{ inquilinos.ultimo_pagamento }}</h5>
                        </a>                                                    
                    </div>
                </div>
            </div>
        </div>
    </div>
</section>

Como resultado, teremos as informações sendo apresentadas, como mostro abaixo:

Gif com fundo branco da tela de localhost:8000, que mostra a tela da página inicial do site “Inquilinos”, na primeira parte do gif, mostra dois clientes: Felippe e Rafael, na segunda parte do gif, é clicado no nome Felipe e é aberto uma tela com informações desse cliente, bem como: nome, status do cliente, tamanho do kitnet, cpf, valor do aluguel e ultimo pagamento

Vale ressaltar que como o projeto completo não foi disponibilizado, o frontend apresentado no gif não condiz com o layout que você está utilizando em seu projeto real. Inclusive, deixo como recomendação que quando precisar de auxílio em projetos grandes que envolvam vários arquivos, deixe o link do projeto completo na resposta, seja um link do github ou até mesmo do drive, dessa forma, a comunidade poderá testar o código tendo o mesmo cenário que você.

Espero ter ajudado. Qualquer dúvida fico à disposição.

Abraços e bons estudos!

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