Как вывести в HTML все объекты из базы Django? - PullRequest
0 голосов
/ 22 января 2020

Я только начал изучать Python и Django. Пытаясь вывести на HTML данные из базы данных, я могу сделать это, если я установлю идентификатор, но мне нужна страница, на которой я перечисляю все данные из базы данных в таблице.

Это мой просмотров:

from django.shortcuts import render
from django.http import HttpResponse
from .models import clientes, viagem

# Create your views here.

def index(request):
    ls= clientes.objects.all()    
    context= {'ls': ls}
    return render(request, "booking/home.html", context)

А это моя страница:

{% extends 'bulma/base.html' %}

{% block title %}Travel{% endblock %}

{% for clientes in clientes %}
{% block content %}


    <table class="table is-fullwidth is-hoverable">
        <thead>
          <tr>
            <th><abbr title="ID">ID</abbr></th>
            <th>Nome</th>
            <th>Apelido</th>
            <th>Morada</th>
            <th>Telemóvel</th>
            <th>NIF</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <th>{{ls.id}}</th>
            <td>{{ls.nome}}</td>
            <td>{{ls.apelido}}</td>
            <td>{{ls.morada}}</td>
            <td>{{ls.tel}}</td>
            <td>{{ls.nif}}</td>
          </tr>
        </tbody>
      </table>

{% endblock content %}
{% endfor %}

Может ли кто-нибудь указать мне правильное направление?

Ответы [ 3 ]

1 голос
/ 22 января 2020

Первое: ваш {% for %} l oop не в нужном месте. При расширении другого шаблона выполняется только код в операторах {% block %}. Итак, вы хотите переместить ваш l oop в {% block content %}.

Второй пункт: в контексте, который вы передаете шаблону, ваш набор запросов называется ls, а не clientes, поэтому вы хотите чтобы изменить это имя либо в представлении, либо в шаблоне - дело в том, что они должны соответствовать xD.

Возможные исправления:

def index(request):
    queryset = clientes.objects.all()    
    context= {'clientes': queryset}
    return render(request, "booking/home.html", context)

и

{% extends 'bulma/base.html' %}

{% block title %}Travel{% endblock %}

{% block content %}


{% for client in clientes %}
    <table class="table is-fullwidth is-hoverable">
        <thead>
          <tr>
            <th><abbr title="ID">ID</abbr></th>
            <th>Nome</th>
            <th>Apelido</th>
            <th>Morada</th>
            <th>Telemóvel</th>
            <th>NIF</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <th>{{client.id}}</th>
            <td>{{client.nome}}</td>
            <td>{{client.apelido}}</td>
            <td>{{client.morada}}</td>
            <td>{{client.tel}}</td>
            <td>{{client.nif}}</td>
          </tr>
        </tbody>
      </table>
{% endfor %}       
{% endblock content %}
0 голосов
/ 22 января 2020

Вы можете попробовать это:

{% extends 'bulma/base.html' %}

{% block title %}Travel{% endblock %}

{% block content %}
    <table class="table is-fullwidth is-hoverable">
        <thead>
          <tr>
            <th><abbr title="ID">ID</abbr></th>
            <th>Nome</th>
            <th>Apelido</th>
            <th>Morada</th>
            <th>Telemóvel</th>
            <th>NIF</th>
          </tr>
        </thead>
        <tbody>
          {% for client in ls %} # ls as you passed variable named ls
            <tr>
              <th>{{client.id}}</th>
              <td>{{client.nome}}</td>
              <td>{{client.apelido}}</td>
              <td>{{client.morada}}</td>
              <td>{{client.tel}}</td>
              <td>{{client.nif}}</td>
            </tr>
            {% endfor %}
        </tbody>
      </table>

{% endblock content %}
0 голосов
/ 22 января 2020

Попробуйте:

{% extends 'bulma/base.html' %}

{% block title %}Travel{% endblock %}

{% for clientes in ls%}
{% block content %}


    <table class="table is-fullwidth is-hoverable">
        <thead>
          <tr>
            <th><abbr title="ID">ID</abbr></th>
            <th>Nome</th>
            <th>Apelido</th>
            <th>Morada</th>
            <th>Telemóvel</th>
            <th>NIF</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <th>{{ls.id}}</th>
            <td>{{ls.nome}}</td>
            <td>{{ls.apelido}}</td>
            <td>{{ls.morada}}</td>
            <td>{{ls.tel}}</td>
            <td>{{ls.nif}}</td>
          </tr>
        </tbody>
      </table>

{% endblock content %}
{% endfor %}

Вы должны использовать то же имя в своем форте oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...