如何将多个图像插入博客文章而不是文件字段上传(Django 博客)

Cur*_*y77 3 python django blogs django-templates filefield

我是 Django Web 开发的半菜鸟。我已经成功添加了一个文件字段,实际上允许我将图像上传到帖子中(图像显示在帖子列表和帖子详细信息中),但是如果我想在帖子中添加多个图像怎么办?

我目前正在写一篇教程文章,并希望在每条指令下插入图像,以方便用户。我不希望教程是纯文本的,我该如何去做呢?

下面是我的 models.py

from __future__ import unicode_literals
from django.db import models
from django.core.urlresolvers import reverse
from django.utils import timezone
#from taggit.managers import TaggableManager


class Post(models.Model):
    author = models.ForeignKey('auth.User')
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(blank=True, null=True)
    image = models.FileField(null=True, blank=True)

    #tags = TaggableManager()

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title

    def approved_comments(self):
        return self.comments.filter(approved_comment=True)

    class Meta:
        ordering = ["-pk"]

class Comment(models.Model):
    post = models.ForeignKey('blog.Post', related_name='comments')
    author = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)
    approved_comment = models.BooleanField(default=False)

    def approve(self):
        self.approved_comment = True
        self.save()

    def approved_comments(self):
        return self.comments.filter(approved_comment=True)

    def __str__(self):
        return self.text
Run Code Online (Sandbox Code Playgroud)

这是我的 forms.py

from django import forms
from .models import Post, Comment

class PostForm(forms.ModelForm):

class Meta:
    model = Post
    fields = ('image','title', 'text')

class CommentForm(forms.ModelForm):

    class Meta:
        model = Comment
        fields = ('author', 'text',)
Run Code Online (Sandbox Code Playgroud)

这是我的博客文章的屏幕截图,您可以看到它只是在我包含 HTML 文件时发布了链接

我的博文

最后,下面是帖子详细信息的片段;

from __future__ import unicode_literals
from django.db import models
from django.core.urlresolvers import reverse
from django.utils import timezone
#from taggit.managers import TaggableManager


class Post(models.Model):
    author = models.ForeignKey('auth.User')
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(blank=True, null=True)
    image = models.FileField(null=True, blank=True)

    #tags = TaggableManager()

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title

    def approved_comments(self):
        return self.comments.filter(approved_comment=True)

    class Meta:
        ordering = ["-pk"]

class Comment(models.Model):
    post = models.ForeignKey('blog.Post', related_name='comments')
    author = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)
    approved_comment = models.BooleanField(default=False)

    def approve(self):
        self.approved_comment = True
        self.save()

    def approved_comments(self):
        return self.comments.filter(approved_comment=True)

    def __str__(self):
        return self.text
Run Code Online (Sandbox Code Playgroud)

这似乎是一项琐碎的任务,我正在努力在某些文本下插入一个简单的图像。有人可以帮忙吗?将不胜感激。

谢谢

山姆

cha*_*ani 6

您可以在文本字段中手动添加图像,如 html <img src="#">。然后在模板中使用“安全”过滤器。所以post.text|safe。这将渲染你的 html。

但这只能解决您问题的一部分,因为您需要一种简单的方法将图像上传到服务器并将它们插入到博客文章中。

您真正需要的是一个所见即所得的编辑器。这是一个列表https://djangopackages.org/grids/g/wysiwyg/

Django-ckeditor 和tinymce 都相当不错。您可以在各自的文档中找到有关如何设置这些内容的教程。