![](/img/trans.png)
[英]Django: How to access STATIC_FILES that I set in settings.py in another view?
[英]How to serve static_files in django?
基本上,我正在练习Django的电子商务项目。 添加图像有两种方法。 ( 1 ) - 首先是有人手动添加照片,但我希望用户通过静态文件自动添加产品照片。
模型.py:
from django.db import models
# Create your models here.
class Mobile(models.Model):
brand = models.CharField(max_length=30)
price = models.IntegerField(default=1)
color = models.CharField(max_length=30)
screen_size = models.IntegerField(default=5)
os = models.CharField(max_length=30, default='Samsung')
def __unicode__(self):
return 'This is a mobile'
def get_price(self):
return self.price
class MobileImage(models.Model):
device = models.ForeignKey(Mobile, on_delete=models.CASCADE)
image = models.ImageField(upload_to='media/images/')
def __unicode__(self):
return self.device
class Laptop(models.Model):
brand = models.CharField(max_length=30)
price = models.IntegerField(default=1)
color = models.CharField(max_length=30)
screen_size = models.IntegerField(default=5)
os = models.CharField(max_length=30, default='Dell')
def __str__(self):
return self.brand
我的意见.py:
def mobile(request):
mobiles = Mobile.objects.all()
context = {
'mobiles': mobiles
}
return render(request, 'device/mobile.html', context)
def laptop(request):
laptops = Laptop.objects.all()
context = {
'laptops': laptops
}
return render(request, 'device/laptop.html', context)
我的手机.html:
{% extends 'device/base.html' %}
{% load static %}
{% block body %}
<h1>Mobile!</h1>
<!-- Table -->
<table class="">
<tr>
<h3>Phones:</h3>
<th>ID</th>
<th>Model</th>
<th>Price</th>
<th>Color</th>
<th>Screen Size</th>
<th>OS</th>
<th>Image</th>
</tr>
<body>
{% for mobile in mobiles %}
<tr>
<td>{{ forloop.id }}</td>
<td>{{ mobile.brand }}</td>
<td>${{ mobile.price }}</td>
<td>{{ mobile.color }}</td>
<td>{{ mobile.screen_size }}</td>
<td>{{ mobile.os }}</td>
{% for item in mobile.mobileimage_set.all %}
<td><img src="{{ MEDIA_URL }}{{ item.image }}" alt="No Photo"></td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}
在第一张图片中,它显示了我的静态文件的路径。 在第二张图片中,它显示了我面临的问题。
将{{ item.image }}
替换为以下代码{{ item.image.url }}
所以,我在这里所做的基本上是从 MobileImage 类中删除图像字段并添加到 Mobile 类本身。 原因很简单,因为我注意到您想使用外键来关联它,但在这种情况下看起来不可行。 如果您有其他问题,请告诉我。 PS:您应该运行 Makemigrations 和 migrate 命令,因为数据库已被更改。
将您的 models.py 文件更改为此
class Mobile(models.Model):
brand = models.CharField(max_length=30)
price = models.IntegerField(default=1)
color = models.CharField(max_length=30)
screen_size = models.IntegerField(default=5)
os = models.CharField(max_length=30, default='Samsung')
image = models.ImageField(upload_to='media/images/')
class MobileImage(models.Model):
device = models.ForeignKey(Mobile, on_delete=models.CASCADE)
将您的 views.py 文件更改为此
def mobile(request):
mobiles = Mobile.objects.all()
context = {
'mobiles': mobiles
}
return render(request, 'device/mobile.html', context)
和你的模板
{% for mobile in mobiles %}
<tr>
<td>{{ forloop.id }}</td>
<td>{{ mobile.brand }}</td>
<td>${{ mobile.price }}</td>
<td>{{ mobile.color }}</td>
<td>{{ mobile.screen_size }}</td>
<td>{{ mobile.os }}</td>
<td><img src="{{ mobile.image.url }}" alt="No Photo"></td>
</tr>
{% endfor %}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.