django - 如何在 Django 中同时放置静态和媒体设置
问题描述
嗨,我对此很困惑,关于如何同时放入静态和媒体urlpatterns
,我已经明白这static
是用于 css/javascript 而media
用于用户上传文件,从那时起如果我使用{% static '<pathname>' %}
in html 文件但我我指的是媒体而不是 css/javascript,是否存在冲突或 django 将如何理解我的目标是媒体?
这是我的 urls.py
from django.conf import settings
from django.conf.urls.static import static
from django.urls import path
from .views import (
login,
signup,
)
urlpatterns = [
path('', login, name = 'login'),
path('signup/', signup, name = 'signup')
]
urlpatterns += static(settings.STATIC_URL, document_root = settings.STATICFILES_DIRS)
我已经把静态和完美的作品,但我应该在哪里除了媒体?
解决方案
在你的urls.py
你可以做这样的事情来发展
from django.urls import path
urlpatters = [
# your url patterns here
]
if settings.DEBUG:
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
# serve static and media files from development server
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
DEBUG = False
当您的文件中有这些设置时,您不需要使用这些设置settings.py
。
同样在您的settings.py
文件中,您应该设置静态文件位置和媒体文件位置,因为一旦将其部署到生产环境中,Django 将在您运行python manage.py collectstatic
. 这是一个例子:
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
=== 编辑在评论中回答您的问题 ===
当上传用户生成的内容(AKA 媒体)时,对该文件位置的引用存储在数据库中。因此,当您的上下文传递给模板时,您将自动获得一个可以在模板中引用的图像对象。
你会做这样的事情
<img src="{{ self.someimage.url }}" alt=""> # would give you the url path.
我不确定您是否将上下文传递给模板,因此您需要从此处获取 if 或将您的视图从views.py
文件中粘贴到您的问题中。
推荐阅读
- solidity - ERROR send 和 transfer 仅适用于 address 类型的对象,而不适用于 address
- azure-app-configuration - FeatureGate 属性发生了什么?
- css - 如果浏览器缩小大图像,它会在不同的屏幕分辨率上显示相同数量的细节吗?
- php - 使用 AJAX 从 php 返回 JSON 数据
- laravel-8 - 如何在 Laravel 8 中安装 vue3 而不使用 vue 脚手架或不使用 Inertia+vue 安装微风/喷射流
- time-series - 在多个串联时间序列上训练 LSTM
- flutter - 添加依赖项 cloud_firestore 时,新的 Flutter 应用程序失败:^1.0.7
- macos - Spotlight (mdfind) 元数据在 macOS BigSur 11.3 更新后更改
- node.js - 该合约对象尚未设置地址,请先设置地址
- python - 有没有更简单的方法来验证 python 中的用户输入而不重复 while 循环?