【问题标题】:how to uploads images on a web server. django如何在网络服务器上上传图像。 django
【发布时间】:2016-11-02 17:11:03
【问题描述】:

我想在我的网站上显示图像,但我找不到我的错误。在其他帖子中,我看到需要升级 settings.py,但我将 MEDIA_ROOT 和 MEDIA_URL 设置为示例,但这对我没有帮助。

型号:

class News(models.Model):
title = models.CharField(max_length=200, unique=True,
                         verbose_name="Заголовок")
description = models.TextField(verbose_name="Краткое содержание")
posted = models.DateField(default=datetime.date.today(), db_index=True, verbose_name="Опубликвана")
tags = TaggableManager(blank=True, verbose_name="Теги")
#user = models.ForeignKey(User)
views = models.IntegerField(default=0)
likes = models.IntegerField(default=0)

class Meta:
    ordering = ['-posted']
    verbose_name = "новость"
    verbose_name_plural = "нвости"

def get_image_filename(self, filename):
    title = self.News.title
    slug = slugify(title)
    return "post_images/%s-%s" % (slug, filename)


class Images(models.Model):
post = models.ForeignKey(News, default=None, related_name="image")
image = models.ImageField(upload_to=settings.MEDIA_ROOT,
                          verbose_name="Image")

设置

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

查看

def news(request):
context = RequestContext(request)
ImageFormSet = modelformset_factory(Images, form=ImageForm,
                                    extra=3)
if request.method == 'POST':
    form = NewsForm(request.POST)
    formset = ImageFormSet(request.POST, request.FILES,
                           queryset=Images.objects.none())
    if form.is_valid() and formset.is_valid():
        post_form = form.save(commit=False)
        #post_form.user = request.user
        post_form.save()
        for forma in formset.cleaned_data:
            try:

                image = forma['image']
                photo = Images(post=post_form, image=image)
                photo.save()
                messages.add_message(request, messages.SUCCESS,
                                     "!!!")
            except KeyError:
                pass
        return redirect("main")
    else:
        print(form.errors, formset.errors)
else:
    form = NewsForm()
    formset = ImageFormSet(queryset=Images.objects.none())
try:
    page_num = request.GET.get('page')
except KeyError:
    page_num = 1
images = Images.objects
all_news = News.objects.all()
paginator = Paginator(all_news, 10)
try:
    pages = paginator.page(page_num)
except InvalidPage:
    pages = paginator.page(1)
return render_to_response("mainpage.html", {'form': form, 'formset': formset,
                                            'pages': pages, 'news': images}, context)

和模板

{% block content %}
    {% for new in pages %}
    <h2>{{ new.title }}</h2>

    <img src="{{ new.image.url}}">

{% endfor %}


<form action="" method="post" enctype="multipart/form-data">
{% include "generic/form.html" %}
<input type="submit" value="создать">
</form>
{% endblock %}

我的错误在哪里?

【问题讨论】:

    标签: python django django-templates django-views


    【解决方案1】:

    这一行:

    images = Images.objects

    将其更改为 images = Images.objects.all() 并检查它是否有效?

    【讨论】:

    • 我忘了删除这一行。它什么也没做。
    【解决方案2】:
    {% for new in news %}
    <h2>{{ new.title }}</h2>
        {% for image in new.image.all %}
        <img src="{{image.image.url }}">
        {% endfor %}
    

    因为 post = models.ForeignKey(News, default=None, related_name="image") 有很多图片。

    【讨论】:

      猜你喜欢
      • 2012-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-29
      • 2014-09-22
      相关资源
      最近更新 更多