gpt4 book ai didi

python - Django Python - 如何在一个 HTML 模板中显示来自不同表格的信息

转载 作者:太空宇宙 更新时间:2023-11-03 10:38:24 25 4
gpt4 key购买 nike

我有一个包含 4 个表的 MySQL 数据库。这些表在我的 models.py 文件(在我的 Django 应用程序中)中有 4 个对应的类。我在 views.py 文件中定义了一些 View 并制作了一些 HTML 模板,但每个模板只能与 1 个 View 通信(我认为它必须是这样的)。但我想在 html 模板上显示来自不同表(来自 models.py 的类)的信息。

例如:我有一个像这样的模板“about.html”:

{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'pdbapp/stat_style.css' %}" />

<body class="news">
<header>
<div class="nav">
<ul>
<li class="home"><a href="/pdbapp/home/">Home</a></li>
<li class="info PDB"><a href="/pdbapp/pdbinfo/">Infos</a></li>
<li class="about"><a class="active" href="/pdbapp/about/">About</a></li>
</ul>
</div>
</header>
</body>

<h1>About Us</h1>

<h2>Project members</h2>

{% if namelist %}
<ul>
{% for i in namelist %}
<li><a href="/pdbapp/pdbinfo/{{ i }}">{{ i }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No informations available.</p>
{% endif %}

我想在我的 HTML 模板中显示 MySQL 表“PDB”和“struct_sec”中的条目数(见下文):

CREATE TABLE PDB(
id_PDB_chain CHAR(5) NOT NULL PRIMARY KEY,
id_PDB CHAR(4) NOT NULL,
chaine VARCHAR(10) NOT NULL,
header VARCHAR(255) NOT NULL,
sequence_Proteine TEXT NOT NULL,
start_seq INT NOT NULL,
taille_Proteine INT NOT NULL,
resolution_PDB FLOAT NOT NULL,
meth_Res VARCHAR(10) NOT NULL,
FOREIGN KEY (meth_Res)
REFERENCES methodes_res(meth_Res)
ON DELETE CASCADE
);

CREATE TABLE struct_sec(
id_struct_sec INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
start_pred INT NOT NULL,
structure_Predite TEXT NOT NULL,
nombre_PPII INT NOT NULL,
pourcentage_PPII FLOAT NOT NULL,
angle_phi TEXT NOT NULL,
angle_psi TEXT NOT NULL,
id_PDB_chain CHAR(5) NOT NULL,
nom_Analyse VARCHAR(7) NOT NULL,
FOREIGN KEY (id_PDB_chain)
REFERENCES PDB(id_PDB_chain)
ON DELETE CASCADE,
FOREIGN KEY (nom_Analyse)
REFERENCES methodes_analyse(nom_Analyse)
ON DELETE CASCADE
);

下面是“models.py”文件中对应的类:

from __future__ import unicode_literals

from django.db import models


class Pdb(models.Model):
id_pdb_chain = models.CharField(db_column='id_PDB_chain', primary_key=True, max_length=5) # Field name made lowercase.
id_pdb = models.CharField(db_column='id_PDB', max_length=4) # Field name made lowercase.
chaine = models.CharField(max_length=10)
header = models.CharField(max_length=255)
sequence_proteine = models.TextField(db_column='sequence_Proteine') # Field name made lowercase.
start_seq = models.IntegerField()
taille_proteine = models.IntegerField(db_column='taille_Proteine') # Field name made lowercase.
resolution_pdb = models.FloatField(db_column='resolution_PDB') # Field name made lowercase.
meth_res = models.ForeignKey('MethodesRes', models.DO_NOTHING, db_column='meth_Res') # Field name made lowercase.

def __unicode__(self):
return self.id_pdb

class Meta:
managed = False
db_table = 'PDB'

class StructSec(models.Model):
id_struct_sec = models.AutoField(primary_key=True)
start_pred = models.IntegerField()
structure_predite = models.TextField(db_column='structure_Predite') # Field name made lowercase.
nombre_ppii = models.IntegerField(db_column='nombre_PPII') # Field name made lowercase.
pourcentage_ppii = models.FloatField(db_column='pourcentage_PPII') # Field name made lowercase.
angle_phi = models.TextField()
angle_psi = models.TextField()
id_pdb_chain = models.ForeignKey(Pdb, models.DO_NOTHING, db_column='id_PDB_chain') # Field name made lowercase.
nom_analyse = models.ForeignKey(MethodesAnalyse, models.DO_NOTHING, db_column='nom_Analyse') # Field name made lowercase.

def __str__(self):
return str(self.id_pdb_chain)

class Meta:
managed = False
db_table = 'struct_sec'

我应该怎么做。我是 Django 的初学者,请相信我真的试图理解网上已经解释过的内容,但没有成功。

最佳答案

您的 View 应如下所示:

def detail(request, poll_id):
pdbs = Pdb.objects.all()
structSecs = StructSec.objects.all()

return render(request, 'detail.html', {'pdbs': pdbs, 'structSecs': structSecs})

然后在模板中:

{% for pdb in pdbs %}
{{pdb.header}}
{% endfor %}

{% for structSec in structSecs %}
{{structSecs.structure_predite}}
{% endfor %}

更多:queriesviewstemplates

关于python - Django Python - 如何在一个 HTML 模板中显示来自不同表格的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43255188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com