Как я могу добавить отображение изображения на моей домашней странице - PullRequest
0 голосов
/ 19 июня 2019

Я создаю сайт, на котором я хочу разместить некоторую информацию с изображением, на своей странице администратора я могу добавить изображение, и оно работает нормально. Но когда я захожу на домашнюю страницу, она не появляется

Я использую Django и Python. Я знаю, что способ, которым я использовал для вызова изображения в домашнем шаблоне, неправильный, пожалуйста, помогите мне, как бы я привел изображение на моей домашней странице ??

URL

from django.urls import path
from . import views
from django.conf import settings
from django.conf.urls.static import static


app_name = "main"

urlpatterns = [
                path("", views.homepage,name="homepage"),

] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Домашний шаблон

{% extends 'main/base.html' %}

{% block content %}
<a class="waves-effect waves-light btn" href="">button</a>
<div class="row">
   <div class="col s12 m9" >
    {% for Doc in documents %}
  <div class="card">
    <div class="card-image">

        <p>{{Doc.docs_name}}</p>
        <p>{{Doc.police_station}}</p>
        <p>{{Doc.docs_details}}</p>
        <img src = "{{Documents.docs_pic.url}}" width = "240">

    </div>
  </div>
 {% endfor %} 

</div> 

 </div>
 {% endblock %}

вид

from django.shortcuts import render
from django.http import HttpResponse
from . models import Documents
from main.models import Documents


# Create your views here.

def homepage(request):
    return render(request=request,
                  template_name="main/home.html",
                  context={"documents":Documents.objects.all}

    )

Модель

from django.db import models

# Create your models here.

class Documents(models.Model):
    docs_name = models.CharField(max_length=200)
    police_station = models.CharField(max_length=200)
    docs_details = models.TextField()
    docs_pic = models.ImageField(upload_to="profileimages",blank=False)

    def __str__(self):
        return self.docs_name

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Ты пробовал вот так?

{% for Doc in documents %}
 <div class="content-wrapper">
  <div class="card">
    <div class="card-image">

        <p>{{Doc.docs_name}}</p>
        <p>{{Doc.police_station}}</p>
        <p>{{Doc.docs_details}}</p>
        <p><img src = "/media/{{Doc.docs_pic}}" width = "240"/></p>

    </div>
  </div>
 <div>
 {% endfor %} 

Надеюсь, у вас это есть в файле settings.py

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
0 голосов
/ 19 июня 2019

Несколько вопросов здесь:

Во-первых, в вашем views.py вы передаете Documents.objects.all в контекст шаблона.Вы должны вызывать Documents.objects.all() как функцию;обратите внимание на () в конце

Second, в шаблоне, на который вы ссылаетесь Documents.docs_pic.url.Вы находитесь в forloop, где Doc - это переменная, которую вы определили, так что это должно быть Doc.docs_pic.url

Незначительные вещи: вы должны установить width="240px", и тег изображения должен быть закрыт,с <img src="{{ Doc.docs_pic.url }}" style="width: 240px" />

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...