Django не отображает содержимое базы данных - PullRequest
0 голосов
/ 12 февраля 2019

Я определил модели и виды.Я хотел бы отобразить Project существующий из базы данных.Однако скрипт не отображает никакого контента.Где проблема?Пожалуйста, обратите внимание на определение модели, видов и HTML-шаблон файла, пытаясь отобразить проекты из базы данных с использованием для цикла.

models.py

from django.db import models
from bifrost.models import CustomUser

# Create your models here.

# Model Projektu
class Project(models.Model):
    PROJECT_TYPE = (
        ('SCR', 'Scrum'),
        ('KAN', 'Kanban'),
    )
    project_key = models.CharField(max_length=8, primary_key=True)
    project_name = models.CharField(max_length=160)
    project_type = models.CharField(max_length=10, choices=PROJECT_TYPE, null=True)
    date_created = models.DateField(null=True)

# Definicja nazwy modelu w Adminie Django
    def __str__(self):
        return self.project_name

views.py

from django.views.generic import ListView
from django.shortcuts import render
from .models import Project

# Create your views here.

class ProjectListView(ListView):
    model = Project
    template_name = 'project-list.html'
    contect_object_name = 'projects_list'

def projectslist(request):
    projects = Project.objects.all()
    return render(request, 'project_list.html', {'projects': projects})

project-list.html template

{% extends 'base.html' %}
<h1 class="h3 mb-2 text-gray-800">{% block title %}Projects{% endblock title %}</h1>

{% block content %}

<!-- DataTales Example -->
<div class="card shadow mb-4">
    <div class="card-header py-3">
      <h6 class="m-0 font-weight-bold text-primary">List of Projects</h6>
    </div>
    <div class="card-body">
      <div class="table-responsive">
        <table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
          <thead>
            <tr>
              <th>Project Key</th>
              <th>Name</th>
              <th>Type</th>
              <th>Created</th>
            </tr>
          </thead>
          <!-- <tfoot>
            <tr>
                <th>Project Key</th>
                <th>Name</th>
                <th>Type</th>
                <th>Created</th>
            </tr>
          </tfoot> -->
          <tbody>
                {% for project in projects_list %}
            <tr>
              <td>{{ project.project_key }}</td>
              <td>{{ project.project_name }}</td>
              <td>{{ project.project_type }}</td>
              <td>{{ project.date_created }}</td>
            </tr>
            {% endfor %}
        </tbody>
    </table>


{% endblock content %}

Отладчик не отображаетсялюбые вопросы.Pylint показывает только небольшие предложения, без ошибок.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Из файла представлений вы передаете projects в качестве параметра типа: return render(request, 'project_list.html', {'projects': projects}), а в файлах шаблонов вы получаете к нему доступ с помощью projects_list , который ничего не вернет.

В вашем шаблоне файл замените:

{% for project in projects_list %}

на:

{% for project in projects %}

Это будет работать.

0 голосов
/ 12 февраля 2019

{% for project in projects_list %}

Измените эту строку в шаблоне, поскольку вы передали проекты в качестве ключа в контексте и используете projects_list .

Попробуйте {% for project in projects %}

И это должно работать.

...