Admin FileField current url incorrect

血红的双手。 提交于 2021-02-06 11:22:45

问题


In the Django admin, wherever I have a FileField, there is a "currently" box on the edit page, with a hyperlink to the current file. However, this link is appended to the current page url, and therefore results in a 404 as there is no such page as, for example: http://127.0.0.1:8000/admin/Tank/asset/17/media/datasheet/13/09/05/copyright.html/
For reference, the correct url of the file is: http://127.0.0.1:8000/media/datasheet/13/09/05/copyright.html

Is there any way to fix this problem in the default admin layout? It affects every FileField in my database, and seems to me like a bug. Am I just using it wrong?


回答1:


settings.py

add the lines:

import os
BASE_DIR = os.path.realpath(os.path.dirname(__file__))

replace the lines:

MEDIA_ROOT = ''
MEDIA_URL = ''

with

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

this should setup your project to render your media content from the folder /your project directory/media/

urls.py

also add the line:

import settings

add the following line in your url patterns:

url(r'^media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT, 'show_indexes': False}),

models.py

inside your model add the following line:

File = models.FileField('File',upload_to='./')

define the method in the model

def fileLink(self):
    if self.File:
        return '<a href="' + str(self.File.url) + '">' + 'NameOfFileGoesHere' + '</a>'
    else:
        return '<a href="''"></a>'
fileLink.allow_tags = True
fileLink.short_description = "File Link"

admin.py

use the field fileLink as a read only field, you can also add it to your list_display

eg

class FileAdmin(admin.ModelAdmin):
    list_display = ['fileLink']
    readonly_fields = ['fileLink']



回答2:


The answer to this question is fairly thoroughly covered by this answer. In brief however, the problem is that you probably haven't set up your MEDIA_ROOT and MEDIA in settings.py and in urls.py you haven't made it so that the media folder is being served.

For the details of how to do those things check out the incredibly awesome answer by Akseli Palen.



来源:https://stackoverflow.com/questions/18632566/admin-filefield-current-url-incorrect

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!