【问题标题】:How do I configure url for static files and media in development?如何为开发中的静态文件和媒体配置 url?
【发布时间】:2018-04-14 17:02:55
【问题描述】:

我正在开发一个需要在屏幕上显示图像的应用程序。我按照 django 教程中的说明配置了“设置”文件。 但由于某种原因,找不到图像。

settings.py

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

STATIC_ROOT = os.path.join(BASE_DIR,'static')
STATIC_URL = '/static/'
# Extra places for collectstatic to find static files.

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

urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('licitacao.urls')),
]   + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

example.html

<img class="card-img-top figure-img img-fluid rounded" src="{% static "media/800x600.png" %}" alt="Card image cap">

如果我通过媒体更改 url 静态,图像会出现,但是,css 和 js 等静态文件停止工作。如何同时运行媒体和静态?

【问题讨论】:

    标签: django django-templates django-views


    【解决方案1】:

    您如何处理保存图像? 您在模型中使用FileFieldImageField 吗?

    假设你有一个这样的模型:

    class Image(models.Model):
        condo = models.ForeignKey(Condo, on_delete=models.CASCADE, related_name='images')
        **image = models.FileField(upload_to="images/")**
        uploaded_at = models.DateTimeField(auto_now_add=True)
    

    那么在你的模板中你不应该使用staticmedia,但是:

    &lt;img src="{{ object.image.url }}"&gt;

    这将为您的图片生成正确的网址。

    另外,不要忘记将 MEDIA_URL 添加到路由。

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

    【讨论】:

    • 我忘记在 URL 中添加路由。谢谢您的帮助。它奏效了。
    【解决方案2】:

    不要将staticmedia 合并到同一路径中,保持它们不同。像这样的东西。

    STATIC_URL = '/static/'
    MEDIA_URL = '/media/'
    

    那就试试吧。它会起作用的。

    【讨论】:

      【解决方案3】:

      与 Piyush 的回答一样,您不能将 STATIC_ROOT 作为 STATICFILES_DIRS 之一。出于某种原因,它们是单独的设置;将它们分开。

      【讨论】:

        猜你喜欢
        • 2017-11-25
        • 2017-06-21
        • 2018-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多