![](/img/trans.png)
[英]Python Django how can't render my variables from views.py on html file
[英]Django 2.1 - can't link my models variables in html file
伙計們,首先感謝您的寶貴時間。 我在我的應用程序的index.html上在django 2.1中設計模板文件時遇到一些問題,我可以進入詳細信息頁面,盡管當我想在html文件中設計我的詳細信息頁面時,我放置了引用,但瀏覽器給了我沒有。 django.db的MY MODELS.PY導入模型
class Dreams (models.Model):
titulo = models.CharField(max_length=100)
objetivo = models.CharField(max_length=100)
imagem = models.CharField(max_length=100)
def __str__(self):
return self.titulo + ' - ' + self.objetivo
class Wich (models.Model):
lets = models.ForeignKey(Dreams, on_delete=models.CASCADE)
make = models.CharField(max_length=100)
it = models.CharField(max_length=100)
def __str__(self):
return self.make
我的觀點
from django.http import HttpResponse, Http404
from .models import Dreams, Wich
from django.template import loader
from django.shortcuts import render
def index(request):
all_dreams = Dreams.objects.all()
contexto = {'all_dreams': all_dreams}
return render(request, 'index.html', contexto)
def detail(request, Dreams_id):
try:
titulo = Dreams.objects.get(pk=Dreams_id)
contexto = {'titulo': titulo}
except Dreams.DoesNotExist:
raise Http404("sem sonhos")
return render(request, 'detail.html', contexto)
我的detail.html文件
<img src = {{ dreams.imagem }}>
<h2>{{ titulo }}</h2>
<h3>{{ wich.make }}</h3>
但是我唯一得到的是中的“ titulo”。 我試圖在“ imagem”和“ make”的視圖中創建變量,但一無所獲。 再次感謝您的寶貴時間。
您的解決方案幾乎是正確的,只是濫用了模板中的對象。 如果將對象傳遞給模板,則可以使用來訪問其屬性.
符號。 我以某種方式更改了detail
視圖,使您在模板中訪問變量時更有意義。
def detail(request, Dreams_id):
try:
dream = Dreams.objects.get(pk=Dreams_id)
contexto = {'dream': dream}
except Dreams.DoesNotExist:
raise Http404("sem sonhos")
return render(request, 'detail.html', contexto)
現在,您可以使用{{ dream.titulo }}
和{{ dream.imagem }}
訪問標題和圖像。
<img src="{{ dream.imagem }}">
<h2>{{ dream.titulo }}</h2>
要訪問引用的Wich
對象,您必須知道Django通過向引用的模型添加屬性<model>_set
來自動創建反向關系 。 在你的情況下dream.wich_set
。 這是RelatedManager的實例,並提供.filter()
.all()
,...之類的方法,用於從數據庫中獲取對象。
此反向關系是一對多關系。 這就是為什么我們得到多個結果,並且必須使用for -loop在模板中對其進行迭代的原因
<img src="{{ dream.imagem }}">
<h2>{{ dream.titulo }}</h2>
{% for wich in dream.wich_set.all %}
<h3>{{ wich.make }}</h3>
{% endfor %}
另外,我建議使用ImageField而不是CharField
來存儲圖像。 存儲在ImageField
中的每個圖像(從FileField繼承所有方法和屬性)都具有url屬性,該屬性適用於img
標簽的src
屬性。 <img src="{{ dream.imagem.url}}">
。
首先,我建議使用get_object_or_404()代替try,除非。 現在讓我談談重點。 如果要訪問模板中的任何變量,則應該並且必須通過context發送它。 您正在以上下文變量titulo
的形式發送夢想對象,因此您必須使用訪問圖像字段
<img src = {{ titulo.imagem }}>
代替
<img src = {{ dreams.imagem }}>
就像您要在模板中使用wich
,您還必須確保要使用哪個wich
,並通過視圖從上下文發送它,或者必須使用titulo.wich_set.all
訪問與夢境對象(titulo)相關的所有wich
,這將返回所有與dream(tutilo)對象有關的所有內容,然后可以循環訪問它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.