我已经开始了一个基于(Telusko/Travello)教程的Django项目,但使用我自己的文件。
Views.py中定义了标题、描述和课程图像的数据。它应该在主页上排成一行填充容器。所有内容都已填充,但图像没有出现以下代码:
```<img src="{{ baseURL }}/{{ course.image }}" alt="Course Pic" class="img-fluid"/>```
但是在相同的代码中,我测试使用静态图像和图像显示。我尝试了不同的图像,包括与动态代码相同的图像。所有工作在静态版本。但奇怪的是,对于静态代码,"alt"tag是动态的。下面是完整的循环:
```
{% for course in courses %}
<div class="col-md-3 bg-aqua">
<div class="p-1">
<img src="{{ baseURL }}/{{ course.image }}" alt="Course Pic" class="img-fluid"/>
{% if forloop.counter == 2 %}
<img src="{% static 'home/img/Dalle1.jpg' %}" alt="Testing" class="img-fluid" />
{% endif %}
</div>
<div class="fs-3">
<span> {{ course.name }} </span>
</div>
<div>
<span> {{ course.description }} </span><br/>
<span> Start Course-1 $ {{ course.price }} </span><br/>
</div>
</div>
{% endfor %}
```
if/endif是我添加的测试静态链接的内容,图像按预期填充在第二列(除了'alt'标题来自动态代码,这看起来很奇怪)
![浏览器图片显示:](https://tinypic.host/i/course-row-images-example.2M6ou)
在home.html:
上定义的baseURL似乎不起作用{% extends "base.html" %}
{% load static %}
{% static 'home/img' as baseURL %}
(图片在静态/home/img。Static是under project)
这是我对静态文件settings.py的设置:
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),]
STATIC_ROOT =os.path.join(BASE_DIR, 'assets')
(以前我有Staticfiles_dirs设置如下,但根据某人的建议更改…两种工作方式,但都不能帮助解决图像问题:
```STATICFILES_DIRS = [os.path.join(BASE_DIR / 'static'),]```
这是views.py
from datetime import datetime
from django.shortcuts import render
from .models import Courses_All
from django.http import HttpResponse
# Create your views here. All showing fine except images.
def home(request):
course1 = Courses_All()
course1.name = 'English Translation'
course1.description = 'Wonderful easy learning'
course1.image = 'Dalle1.jpg'
course1.price = 700
course2 = Courses_All()
course2.name = 'English Stopping Rules'
course2.description = 'Nice easy learning'
course2.image = 'Dalle1.jpg'
course2.price = 100
course3 = Courses_All()
course3.name = 'English Recitation'
course3.description = 'Beautiful easy learning'
course3.image = 'Dalle_1 (test).jpg'
course3.price = 400
courses =[course1, course2, course3]
return render(request, 'home.html', { 'courses': courses})
在浏览器中,当我右键单击并选择"查看页面源"时,对于动态图像,如下所示(对于静态完整路径显示):
```<img src="/Dalle1.jpg" alt="Course Pic" class="img-fluid"/>```
那么baseURL部分根本不被识别吗?
请让我知道如果我应该分享任何其他信息来解决这个问题。我是用教程做的,但我使用了最新的Python和Django,没有借用文件。一直工作到现在。主页上的其他一切,包括导航栏,标题等显示良好。这个包含课程的行位于标题和另一行的下面。
找到这个问题的答案了:
Django:在模板中插入一个路径为dynamic的图像
我根据上面的帖子修改了下面的代码,它工作了:
<img src="{% static 'home/img/' %}{{ course.image }}" alt="Course Pic" class="img-fluid"/>
所以甚至不需要任何baseURL变量(不工作)。