gpt4 book ai didi

django - 如何在 Django 中同时设置静态和媒体设置

转载 作者:行者123 更新时间:2023-12-02 00:04:42 26 4
gpt4 key购买 nike

嗨,我很困惑,关于如何将静态和媒体放入 urlpatterns同时,我已经明白static用于 css/javascript 而 media是给用户上传文件的,从那以后如果我用{% static '<pathname>' %}在 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/'

=== 编辑以在评论中回答您的问题 ===

当上传用户生成的内容(也称为媒体)时,对该文件位置的引用将存储在数据库中。因此,当您的上下文传递给模板时,您将自动获得一个图像对象,您可以在模板中引用它。

你会做这样的事情

<img src="{{ self.someimage.url }}" alt=""> # would give you the url path.

我不确定您的上下文是否已传递给模板,因此您需要从此处获取 if 或从 views.py 粘贴您的 View 提交您的问题。

关于django - 如何在 Django 中同时设置静态和媒体设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60958471/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com