【问题标题】:How to insert multiple images into a blog post not File field upload (Django blog)如何将多个图像插入博客文章而不是文件字段上传(Django 博客)
【发布时间】:2017-10-11 13:09:32
【问题描述】:

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

我目前正在撰写一篇教程文章,并希望在每条指令下插入图片以方便用户使用。我不希望教程纯文本,我该怎么做呢?

下面是我的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

这是我的 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',)

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

My blog post

最后是帖子详细信息的sn-p;

{% extends 'blog/base.html' %}

{% block content %}
 

		{% if user.is_authenticated %}
     		<a class="btn btn-default pull-left" href="{% url 'post_edit' pk=post.pk %}"><span class="glyphicon glyphicon-pencil"></span></a>
		{% endif %}

		<div id="post_det">
			{% if post.published_date %}
				<div class="date">
					{{ post.published_date }}
				</div>
			{% endif %}

			<h1 class="post-title">{{ post.title }}</h1>
				<img src="{{post.image.url}}" class="img-responsive blog-img"/>
				&nbsp; 
				
			<p class="post_text">{{ post.text|linebreaksbr }}</p>
			
			
		</div>
	&nbsp; 
	
	<hr>
		<a class="btn comment_button" href="{% url 'add_comment_to_post' pk=post.pk %}">Add comment</a>
		
	
	<div>
	&nbsp;  
	
		{% for comment in post.comments.all %}
		{% if user.is_authenticated or comment.approved_comment %}
			<div class="comment">
			<div class="date">
            {{ comment.created_date }}
            {% if not comment.approved_comment %}
                <a class="btn btn-default" href="{% url 'comment_remove' pk=comment.pk %}"><span class="glyphicon glyphicon-remove"></span></a>
                <a class="btn btn-default" href="{% url 'comment_approve' pk=comment.pk %}"><span class="glyphicon glyphicon-ok"></span></a>
            {% endif %}
			</div>
			<strong>{{ comment.author }}</strong>
			<p>{{ comment.text|linebreaks }}</p>
			</div>
		{% endif %}
			{% empty %}
				<p>No comments here yet :(</p>
			{% endfor %}
	</div>
{% endblock %}

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

谢谢

山姆

【问题讨论】:

  • 那么,您的问题是要添加多个图像吗?还是图像渲染不正确?
  • @alfonso.kim 我想在博客文章中插入多张图片。现在我只知道如何上传一个并让它出现在帖子的顶部,从我的帖子细节可以看出 sn-p 是否需要编辑models.py文件?谢谢

标签: python django django-templates blogs filefield


【解决方案1】:

您可以在文本字段中手动将图像添加为 html,例如 &lt;img src="#"&gt;。然后在模板中使用“安全”过滤器。所以post.text|safe。这将呈现您的html。

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

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

Django-ckeditor 和 tinymce 都不错。您可以在各自的文档中找到有关如何设置它们的教程。

【讨论】:

  • 很高兴听到我的回答对 Curly77 有所帮助,您能给我点个赞并将答案标记为解决您的问题吗?
  • 我已经标记了答案并投票了,你看不到投票,因为我是 stackoverflow 的新手。再次感谢!
猜你喜欢
  • 2015-06-03
  • 2016-03-10
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-18
  • 1970-01-01
相关资源
最近更新 更多