【问题标题】:Why is my code not rendering a list of table on my web page?为什么我的代码没有在我的网页上呈现表格列表?
【发布时间】:2019-10-16 16:29:25
【问题描述】:

我有一个带有递增主键的模型 D100Generator。我正在尝试模仿 Django 教程 pt。 3,用一个表名列表替换应该在 index.html 页面上呈现的问题。当我运行代码时,我得到一个<ul> 项目符号,但没有文本。我的latest_table_list 没有被填充吗?还是我叫错了?

我对 Python、Web 开发和 Stack Overflow 非常陌生,如果格式和解释不佳,请见谅。

我怀疑我没有正确调用table_name 字段,但我尝试过的任何方法都无法正常工作。

我尝试将列表的行项目设置为:

<li><a href="/generators/{{ d100Generator.d_100_id }}/">{{ d100Generator.table_name }}</a></li>

作为:

&lt;li&gt;&lt;a href="/generators/{{ d100Generator.id }}/"&gt;{{ d100Generator.table_name }}&lt;/a&gt;&lt;/li&gt;

这两者都不会帮助按需要显示。

D100 发电机型号
class D100Generator(models.Model):
    d_100_id = models.AutoField(primary_key=True)
    field_of_interest = models.ForeignKey(FieldOfInterest, on_delete=models.CASCADE)
    subreddit_post_id = models.ForeignKey(Subreddit, on_delete=models.CASCADE, blank=True, null=True)
    module_id = models.ForeignKey(Module, on_delete=models.CASCADE, blank=True, null=True)
    generic_website_id = models.ForeignKey(GenericWebsite, on_delete=models.CASCADE, blank=True, null=True)
    table_name = models.CharField('table name', max_length=100)
    system = models.CharField(max_length=150)
    genre = models.CharField(max_length=250)
    chart_type = models.CharField('Die used', max_length=15)
    chart_instructions = models.TextField('Chart instructions & explanation')
    roll_1 = models.TextField('1', blank=True, null=True)
    roll_2 = models.TextField('2', blank=True, null=True)
    roll_3 = models.TextField('3', blank=True, null=True)
    ...
    roll_110 = models.TextField('110', blank=True, null=True)
    def __str__(self):
        return self.table_name
#Views.py 索引条目
from django.shortcuts import render

from .models import D100Generator

def index(request):
    latest_table_list = D100Generator.objects.order_by('-d_100_id')[:5]
    context = {
        'latest_table_list': latest_table_list
    }
    return render(request, 'generators/index.html', context)
##index.html 页面本身的代码
<h1>Welcome to Capstone Generators' homepage!</h1>
<br>
<h2>Recent topics added include:</h2>
<br>
<h2>Recent tables added include:</h2>
{% if latest_table_list %}
    <ul>
    {% for d_100_id in latest_table_list %}
        <li>{{ D100Generator.table_name }}</li>
    {% endfor %}
    </ul>
{% else %}
    <p>No tables are available.</p>
{% endif %}

我有一张表是通过管理页面手动添加的,所以项目符号列表应该包括表名“你的精灵学了 25 年...”

【问题讨论】:

    标签: html django python-3.x


    【解决方案1】:

    这里您使用的是循环变量d_100_id,但您尝试使用D100Generator 访问table_name

    所以改成:

    {% for d_100_id in latest_table_list %}
            <li>{{ d_100_id.table_name }}</li>
        {% endfor %}
    

    【讨论】:

    • 效果很好,我也能适应它。所以 d_100_id 设置为循环变量?为什么我写的是 d_100_id.table_name 而不是 D100Generator.table_name?
    • @brosengren 你将d_100_id 设置为这一行{% for d_100_id in latest_table_list %} 中的循环变量,所以你需要使用这个循环变量而不是模型名称
    猜你喜欢
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 2020-05-04
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    相关资源
    最近更新 更多