【问题标题】:Django Admin FileFile not open from listviewDjango 管理文件文件未从列表视图打开
【发布时间】:2021-01-11 00:16:21
【问题描述】:

在我的模型类中,我有一个像这样的属性:

c_cv = models.FileField(upload_to='mysite/static/docs', max_length=254, validators=[FileExtensionValidator(['pdf']),validate_fsize], verbose_name="CV")

在我的 admin.py 中:

list_display = ('c_data', 'c_sur', 'c_name', 'c_dob', 'c_en', 'c_de', 'c_cv')

但是当我从管理员打开我的列表页面时,如果我单击列表中的 c_cv 字段,我会收到错误消息,因为链接不是从 127.0.0.1:8000/mysite/static/docs/file.pdf 开始,而是从127.0.0.1:8000/admin/cv_list/...

如何在管理员中强制使用域根 instad 实际路径作为前缀查看我的 c_cv 字段?

提前非常感谢

【问题讨论】:

    标签: django django-models django-admin filefield


    【解决方案1】:

    您是否定义了用于查看媒体的 URL?您在 settings.py 中将 MEDIA_URL 和 MEDIA_ROOT 设置为什么?

    我做了这样的事情来访问上传的文件:

    1.在 settings.py 中:

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

    2.定义了一个用于上传媒体文件的url:

    在 urls.py 中:

    @login_required
    def protected_serve(request, path, document_root=None, show_indexes=False):
        return serve(request, path, document_root, show_indexes)
    
    re_path(r'^%s(?P<path>.*)$' % settings.MEDIA_URL[1:], protected_serve, {'document_root': settings.MEDIA_ROOT}),    
    

    这样我也可以停止对已上传文件列表的目录索引。你可以试试这个

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多