我有一个Django应用,该应用使用不同的静态文件,例如图像,css文件和js文件。就是说,文档https://docs.djangoproject.com/en/2.2/howto/static-files/显示了两种提供静态文件的方法,而且我也看到开发人员遵循这两种方法。
我目前正在这样做:
#settings.py
STATIC_URL = '/static/'
# whatever.html
{% load static %}
<img src="{% static "my_app/example.jpg" %}" alt="My image">
我所有的图像都和main.css文件放在同一文件夹中。
但是我也看到开发人员遵循文档的第二种方法:
#settings.py
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
#urls.py
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
使用第二种方法时,它们将具有一个名为media的不同文件夹,该文件夹与所有主要应用程序位于同一级别。我应该把照片留在那里。
我想知道是否可以采用我正在做的第一种方法(使用{%load static%}),以及两种方法之间的区别。
谢谢!
答案 0 :(得分:1)
实际上Django
不会将两者都视为静态文件。
静态文件图像
<img src="{% static "my_app/example.jpg" %}" alt="My image">
这些是应用程序媒体文件,应该在应用程序范围内使用。它们特别适合在CSS,JS等中使用。
媒体文件图像
urlpatterns = [
# ... the rest of your URLconf goes here ...
]
这些媒体文件用于用户上传的内容。它特别处理请求响应周期。
注意: Django使用户上载的媒体与应用程序媒体分离,从而使部署,备份和版本控制更加容易。