我有一个文章条目模型,我有一个摘录和描述字段。如果用户想要发布图像,那么我有一个单独的 ImageField,它具有默认的标准文件浏览器。
我试过使用 django-filebrowser
但我不喜欢它需要 django-grappelli
的事实我也不一定需要 Flash 上传实用程序 - 任何人都可以推荐一个我可以管理图像上传的工具,并且基本上用图像选择浏览器替换 django 提供的文件浏览?
将来我可能希望它处理图像大小调整并为某些文章类型指定默认图像大小。
编辑:我正在尝试 adminfiles现在但我在安装它时遇到问题。我捕获它并将其添加到我的 python 路径中,将其添加到 INSTALLED_APPS,为其创建数据库,上传图像。我按照说明修改我的模型以指定 adminfiles_fields
并注册但它没有在我的管理员中申请,这是我的 admin.py
文章:
from django.contrib import admin
from django import forms
from articles.models import Category, Entry
from tinymce.widgets import TinyMCE
from adminfiles.admin import FilePickerAdmin
class EntryForm( forms.ModelForm ):
class Media:
js = ['/media/tinymce/tiny_mce.js', '/media/tinymce/load.js']#, '/media/admin/filebrowser/js/TinyMCEAdmin.js']
class Meta:
model = Entry
class CategoryAdmin(admin.ModelAdmin):
prepopulated_fields = { 'slug': ['title'] }
class EntryAdmin( FilePickerAdmin ):
adminfiles_fields = ('excerpt',)
prepopulated_fields = { 'slug': ['title'] }
form = EntryForm
admin.site.register( Category, CategoryAdmin )
admin.site.register( Entry, EntryAdmin )
这是我的入口模型:
class Entry( models.Model ):
LIVE_STATUS = 1
DRAFT_STATUS = 2
HIDDEN_STATUS = 3
STATUS_CHOICES = (
( LIVE_STATUS, 'Live' ),
( DRAFT_STATUS, 'Draft' ),
( HIDDEN_STATUS, 'Hidden' ),
)
status = models.IntegerField( choices=STATUS_CHOICES, default=LIVE_STATUS )
tags = TagField()
categories = models.ManyToManyField( Category )
title = models.CharField( max_length=250 )
excerpt = models.TextField( blank=True )
excerpt_html = models.TextField(editable=False, blank=True)
body_html = models.TextField( editable=False, blank=True )
article_image = models.ImageField(blank=True, upload_to='upload')
body = models.TextField()
enable_comments = models.BooleanField(default=True)
pub_date = models.DateTimeField(default=datetime.datetime.now)
slug = models.SlugField(unique_for_date='pub_date')
author = models.ForeignKey(User)
featured = models.BooleanField(default=False)
def save( self, force_insert=False, force_update= False):
self.body_html = markdown(self.body)
if self.excerpt:
self.excerpt_html = markdown( self.excerpt )
super( Entry, self ).save( force_insert, force_update )
class Meta:
ordering = ['-pub_date']
verbose_name_plural = "Entries"
def __unicode__(self):
return self.title
编辑#2:为了澄清我确实将媒体文件移动到我的媒体路径并且它们确实在渲染图像区域,我可以上传很好,
<<<image>>>
标签被插入到我的可编辑 MarkItUp w/Markdown 区域,但它没有在 MarkItUp 预览中呈现 - 也许我只需要应用 |upload_tags
进入该预览。我会尝试将它添加到我的模板中,该模板也发布了这篇文章。
最佳答案
试试 django-adminfiles - 这很棒。您可以上传图片或选择现有图片,并将它们插入文本中的任何位置,它们将显示为 <<<placeholders>>>
.您可以使用特殊模板完全控制如何在实际站点上解析占位符 - 允许您控制图像在站点上的显示方式(包括缩放,例如使用 sorl.thumbnail 模板标签)。
该应用程序可以轻松支持插入其他类型的文件——您只需为给定的文件类型创建一个模板,显示它应该如何在您的网站上呈现。它甚至支持从 Flicker 和 YouTube 插入。
正如你所看到的,我仍然很想找到它:)
它在您的管理面板中看起来像这样(尽管屏幕截图来自一个非常旧的版本):
django-adminfiles http://lincolnloop.com/legacy/media/img/django-admin-uploads.png
更新 :您可以完全控制图像的显示时间和方式。一些例子:
{{ article.content|render_uploads }}
{{ post.content|render_uploads:"adminfiles/render_as_link" }}
{{ article.content|render_uploads|striptags }}
{{ article.content|render_uploads:"adminfiles/only_caption" }}
adminfiles/blank/default.html
文件和这个:{{ article.content|render_uploads:"adminfiles/blank" }}
还有其他一些方法可以达到相同的效果(例如,选择正确的
ADMINFILES_REF_START
和 ADMINFILES_REF_END
并且根本不使用过滤器),但我认为这篇文章已经太长了;)
关于Django:在管理员中维护图像的很棒的插件是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2218750/