使用Django应用程序提供静态图片

2024-04-25 19:07:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在关注一本Django的书,它构建了一个web应用程序。当我建立一个模板时,我得到的结果和这本书的一样,只是我的图片不在那里。你知道吗

我想知道是什么导致了这个问题。图片有正确的网址,但当我试图打开他们,Django国家“网页找不到404”。你知道吗

我正在粘贴下面的相关代码。此外,我还提供了我的目录树的截图。你知道吗

enter image description here

选购/型号.py地址:

class Product(models.Model):
    category = models.ForeignKey(Category,
                                 related_name='products')
    name = models.CharField(max_length=200, db_index=True)
    slug = models.SlugField(max_length=200, db_index=True)
    image = models.ImageField(upload_to='products/%Y/%m/%d',
                              blank=True)

    description = models.TextField(blank=True)
    price = models.DecimalField(max_digits=10, decimal_places=2)
    stock = models.PositiveIntegerField()
    available = models.BooleanField(default=True)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

模板:

<a href="{{ product.get_absolute_url }}">
                <img src="  {% if product.image %}
                                {{ product.image.url }}
                            {%else %}
                                {% static 'img/no_image.png' %}
                            {% endif %}
                ">
           </a>

你知道吗视图.py你知道吗

def product_list(request, category_slug=None):
    category = None
    categories = Category.objects.all()
    products = Product.objects.filter(available=True)
    if category_slug:
        category = get_object_or_404(Category, slug=category_slug)
        products = products.filter(category=category)
    return render(request, 'shop/product/list.html',
                            {'category': category,
                            'categories': categories,
                            'products': products})

编辑(设置.py以及网址.py):

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.10/howto/static-files/

STATIC_URL = '/static/'

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')

你知道吗网址.py你知道吗

from django.conf.urls import url, include
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^shop/', include('shop.urls', namespace='shop')),
    url(r'^cart/', include('cart.urls', namespace='cart')),

]

if settings.DEBUG:
       urlpatterns += static(settings.MEDIA_URL,
                             document_root=settings.MEDIA_ROOT)

Tags: djangofrompyimagetrueurlmodelsstatic