【问题标题】:Django: Downloading uploaded filesDjango:下载上传的文件
【发布时间】:2017-03-16 18:09:32
【问题描述】:

我有这个问题Django: Adding files to a form gives multiple argument error的表单详细信息

如何下​​载上传的文件。当我去编辑表单的视图时,我可以看到上传的文件 url,但它没有下载。 开发和生产模式需要更改哪些设置?

点击链接时出错:

Page not found (404)
Request Method:     GET
Request URL:    http://127.0.0.1:8000/media/Certificate.docx

Using the URLconf defined in tiktant.urls, Django tried these URL patterns, in this order:

    ^ ^$ [name='home']
    ^ ^login/$ [name='login']
    ^ ^logout/$ [name='logout']
    ^ ^logout_then_login/$ [name='logout_then_login']
    ^ ^dashboard/$ [name='dashboard'] 
The current URL, media/Certificate.docx, didn't match any of these.

【问题讨论】:

    标签: django django-forms django-views django-urls


    【解决方案1】:

    媒体 url 未显示在根 urls.py 文件中。您需要在 urls.py 文件中添加以下代码以启用相同的功能。

    if settings.DEBUG:
        from django.conf.urls.static import static
        urlpatterns += static(settings.MEDIA_URL,
                              document_root=settings.MEDIA_ROOT)
    

    注意:请不要忘记在 settings.py 文件中添加 MEDIA_ROOT 和 MEDIA_URL。要下载文件,您需要编写更多代码。

    【讨论】:

    • 这是有效的。我启动它时是否必须进行任何更改,我的意思是同样的事情也适用于生产模式?我可以下载文件。
    • 可以将其标记为已解决,但第二个问题未决。生产模式会不会有变化?使用 debug=False?
    • @PulkitSharma 您必须运行 python manage.py collectstatic 才能在生产环境中加载所有 css、js 和媒体文件。
    【解决方案2】:

    确保您在项目中添加了以下行 设置.py

    import os 
    def root(x):
        return os.path.join(os.path.abspath(os.path.dirname(__file__)), '..',x)
    MEDIA_ROOT = root('media')
    MEDIA_URL = '/media/'
    TEMPLATE_CONTEXT_PROCESSORS = (
        '-----------------------'
        'django.core.context_processors.media',
    
    )
    

    urls.py

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

    【讨论】:

      猜你喜欢
      • 2021-02-16
      • 2018-10-13
      • 2011-03-07
      • 1970-01-01
      • 1970-01-01
      • 2021-06-02
      • 1970-01-01
      • 2020-01-31
      • 2018-09-05
      相关资源
      最近更新 更多