【问题标题】:How to serve media file when runserver --insecure?runserver --insecure 时如何提供媒体文件?
【发布时间】:2015-03-19 17:29:22
【问题描述】:

runserver --insecure时有什么方法可以提供媒体文件

它只提供 css 和 js 和图像,但我需要提供媒体文件...

They 提到cachefile 是不可能的,但没有关于媒体的消息。

【问题讨论】:

    标签: django


    【解决方案1】:

    您需要告诉它为您的媒体文件提供服务。在你的urls.py:

    from django.conf import settings
    if settings.DEBUG == False:
        urlpatterns += patterns('',
            url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
                'document_root': settings.MEDIA_ROOT,
            }),
            url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {
                'document_root': settings.STATIC_ROOT,
            }),
    )
    

    【讨论】:

    • 注意:Django 在通过 runserver 为开发提供静态文件方面变得更加友好,但媒体似乎仍然需要此更新(我只会在 DEBUG 为 True 时使用此更新,而不是 False)。
    • 就我而言,在将 'django.views.static.serve' 更改为 serve 后,它确实工作得很好。在更改它之前,您应该通过from django.views.static import servefrom django.conf import settingsfrom django.conf.urls import url 导入一些模块
    【解决方案2】:

    写:

    import re
    from urllib.parse import urlsplit
    
    from django.conf import settings
    from django.core.exceptions import ImproperlyConfigured
    from django.urls import re_path
    from django.views.static import serve
    
    def static(prefix, view=serve, **kwargs):
        return [
            re_path(r'^%s(?P<path>.*)$' % re.escape(prefix.lstrip('/')), view, kwargs=kwargs),
        ]
    

    然后在urls.py:

    urlpatterns = [
        path('admin/', admin.site.urls),
        ...
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    

    【讨论】:

      猜你喜欢
      • 2020-04-15
      • 2010-09-29
      • 2012-06-15
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      相关资源
      最近更新 更多