Skip to main content
 首页 » 编程设计

python之无法查看在 django admin 中创建的缩略图

2024年10月24日3898°冷暖

我正在尝试在 Django 管理中创建我自己的缩略图,我相信它们已被正确指向。但是我无法查看缩略图。这是我看到的:

当我点击缩略图时,我被重定向到这个 URL,我看到的只是一个空白页面。

http://localhost:8000/media/media/Screen_Shot_2016-04-08_at_12.55.25_PM.png

这是正确的 URL,但我在页面中看不到任何内容。

这是我的代码:

在我的 settings.py 中

所有文件都将转到 cherngloong/uploads 和 /media/ 将是 MEDIA_ROOT 的公共(public)前台表示

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

在 cherngloong/cherngloong/urls.py 中,我附加到列表以提供静态文件:

urlpatterns = [ 
    url(r'^admin', include(admin.site.urls)), 
    url(r'', TemplateView.as_view(template_name="index.html"), name="index"), 
    url(r'^api/', include('api.urls')) 
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

我的 cherngloong/api/urls.py:

urlpatterns = [ 
    url(r'ig$', most_recent) 
] 

cherngloon/api/models.py:

class Media(models.Model): 
    ... 
    ... 
    file = models.FileField(upload_to="media/", default=None) 

cherngloong/api/admin.py:

class MediaAdmin(admin.ModelAdmin): 
    search_fields = ["name", "file"] 
    list_display = ("name", "media_type", "url", "album", "display", "thumbnail") 
    def display(self, media_obj): 
        return '<a href="%s">%s</a>' % (media_obj.file.url, media_obj.file.name) 
 
    def thumbnail(self, media_obj): 
        location = media_obj.file.url 
        thumbnail_html = "<a href=\"{0}\"><img border=\"0\" alt=\"\" src=\"{1}\" height=\"80\" /></a>".format(location, location) 
        return thumbnail_html 
 
    thumbnail.allow_tags = True 
    display.allow_tags = True 

项目结构:

请您参考如下方法:

我看不出您的代码有任何不一致之处。我刚刚在 GitHub 上创建了一个具有相同结构的项目,你在这里发布了代码,一切都很顺利,你可以自己测试,看这里的代码:https://github.com/vladir/cherngloong .我使用的是最新版本的 Django,我知道您使用的是 Django 1.9 以下的版本,因为您仍在使用 allow_tags,但即便如此,您的代码对我来说似乎很好。也许我的代码可以帮助您找到正在发生的事情。

我找到了它发生的原因。删除这一行:

url(r'', TemplateView.as_view(template_name="index.html"), name="index"),

从您的cherngloong/cherngloong/urls.py,它会呈现正常。

似乎这个 URL 太开放了,它干扰了缩略图 URL。 它可以为你工作: url(r'^$', TemplateView.as_view(template_name="index.html"), name="index"),

我在存储库中更新了我的代码,以便您可以测试它是否正常工作。