![](/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.