有没有什么方法可以在管理面板上将django textfield中的图像上传,就像我们在wordpress上选择上传图片一样。我使用ckeditor作为我的文本域编辑器,它允许我插入链接并使文本变为粗体,有一个上传图像选项可用,但它要求我提供图像URL而不是让我从我的系统浏览图像文件。以下是我的models.py代码的一部分:
from tinymce.models import HTMLField
from ckeditor.fields import RichTextField
from django.db import models
from datetime import datetime
from django.template.defaultfilters import slugify
from unidecode import unidecode
from django.template import defaultfilters
class Category(models.Model):
name = models.CharField(max_length=128,unique=True)
slug = models.SlugField(unique=True, null=True, blank=True)
def save(self, *args, **kwargs):
self.slug = slugify(self.name)
super(Category, self).save(*args, **kwargs)
def __str__(self):
return self.name
class Heading(models.Model):
category = models.ForeignKey(Category)
title = models.CharField(max_length=5000)
content = RichTextField()
image= models.ImageField(null=True,blank=True)
date = models.DateField(default=datetime.now())
time = models.TimeField(default=datetime.now())
slug = models.SlugField(unique=True, null=True, blank=True)
def save(self, *args, **kwargs):
self.slug = defaultfilters.slugify(unidecode(self.title))
super(Heading, self).save(*args, **kwargs)
def __str__(self):
return self.title
答案 0 :(得分:2)
您可以使用django-ckeditor的 RichTextUploadingField 。 您需要先在 models.py
中导入它from ckeditor.fields import RichTextUploadingField
现在在您的模型中,您可以这样做
content = RichTextUploadingField()
默认情况下, RichTextUploadingField 允许您上传任何文件。您还可以将此字段限制为仅上传图片,方法是将此行添加到 settings.py
CKEDITOR_ALLOW_NONIMAGE_FILES = False
答案 1 :(得分:0)
上传像WordPress这样的图像不是一个简单的过程,尽管实现起来很简单。
当您在WordPress中上传图像时,在后台WordPress将图像保存在服务器上(使用AJAX),然后获取其链接并在文本编辑器中显示它。
由于文字编辑不支持文件上传,您需要自己实现。
但是,当django-ckeditor
app支持文件上传时,为什么还要烦恼呢。 See docs