簡體   English   中英

Django 2.1-無法在html文件中鏈接我的模型變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM