社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

Django:网页URL与媒体文件混合的问题

Julien Mertz • 5 年前 • 2026 次点击  

我正在开发一个网站,有时我会遇到一个奇怪的问题:页面的URL与此页面上图像的URL相关联,这意味着我无法访问这些图像。解释起来有点困难,下面是一个例子:

我有一个名为“mes_plats”的视图,它显示了一些关于用炊具做饭的信息。这些信息的背景显示在 static/media/img_background.jpg 一切正常。我有另一个名为“supprimer-plat”(url:supprimer-plat)的视图,其目的是删除关于某一顿饭的信息。此视图呈现与另一个相同的html模板,但这次模板尝试访问以下背景url: supprimer-plat/static/media/img_background.jpg . 很明显背景没有显示出来。 所以我的问题是,为什么页面的url在一种情况下与图像的url一致,而不是在另一种情况下?我该怎么解决呢?提前谢谢!

视图.py

def mes_plats(request):
    return render(request, 'actualites/mes_plats.html', {'my_meals': Plat.objects.filter(chef=request.user.useradvanced.chef, date_prep__gte = date.today())})

def supprimer_plat(request, id):
    plat = get_object_or_404(Plat, id=id)
    plat.delete()
    return render(request, 'actualites/mes_plats.html', {'my_meals': Plat.objects.filter(chef=request.user.useradvanced.chef, date_prep__gte = date.today())})

网址.py

urlpatterns = [
    path('mes-plats', views.mes_plats, name = 'mes-plats'),
    path('supprimer-plat/<int:id>', views.supprimer_plat, name = 'supprimer-plat'),
]

mes_plats.html

<!doctype html>
{% extends "base.html" %}
{% load static %}
{% block content %}
   <body class="view" style="background-image: url('static/media/img_background.jpg'); background-repeat: no-repeat; background-size: cover; background-position: center center;">
      SOME CODE
{% endblock %}
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52022
 
2026 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Willem Van Onsem
Reply   •   1 楼
Willem Van Onsem    5 年前

这是 预期 行为。您的url是:

static/media/img_background.jpg

使用 相对的 路径。所以如果地点在 foo.com/bar/qux ,然后它将浏览 foo.com/bar/static/media/img_background.jpg .

因此,可以通过在路径前面加上斜线来避免这种情况,例如:

/static/media/img_background.jpg

但在这里最好利用Django的 staticfiles support [Django-doc] . 配置之后,可以使用 {% static … %} template tag [Django-doc] 计算网址。

注意,在部署模式下,您需要将服务器配置为 服务 静态文件本身。但你仍然可以使用 {% static … %} 计算URL,从而减少出错的可能性。