Django 1.7 ImageField,我的图像未上载到媒体URL

2024-06-06 19:10:15 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我花了好几个小时想弄清楚这个问题,关于这个话题有很多例子,但是没有一个能解决我的问题,所以我要提出另一个问题。当我上传一个带有图片的表单时,我基本上是用一个图片和一个表单上传。在

所以在模型.py我保持一个默认值,因为不需要一个图像来发布,但是当我尝试创建一个带有图像的帖子时,没有图像被上传。当我在模板上显示图像时,它将恢复为默认值。我是否遗漏了将图像上载到媒体URL的内容?我的代码在下面。。。在

在模型.py在

class Posting(models.Model):
    textbook = models.ForeignKey(Textbook)
    condition = models.CharField(max_length = 200)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    user = models.ForeignKey(User)
    image = models.ImageField(upload_to='postingpics/', default="../../static/textchange/nophoto.jpg")
    post_date = models.DateTimeField('date_posted')

    def __str__(self):
        return str(self.textbook)

    def was_posted_recently(self):
        return self.post_date >= timezone.now() - datetime.timedelta(days=1)
    was_posted_recently.admin_order_field = 'post_date'
    was_posted_recently.boolean = True
    was_posted_recently.short_description = 'Posted recently'

在表单.py在

^{pr2}$

在设置.py在

MEDIA_ROOT = '/home/joe/documents/exchange/Texchange/media/'

MEDIA_URL = '/media/'

在视图.py在

@login_required
def addposting(request, uisbn):
    form = PostCreate(request.POST or None)

    # Get textbook with isbn equal to usibn
    ltextbook = Textbook.objects.filter(isbn = uisbn)
    text = ltextbook[0]
    curuser = request.user

    if form.is_valid() and request.POST:
        condition = request.POST.get('condition')
        price = request.POST.get('price')
        image = request.POST.get('image')
        if image:
            if (not (Posting.objects.filter(Q(user = curuser) & Q(textbook = text)))):
                new = Posting(textbook = text, user = curuser, post_date = datetime.now(), condition=condition, price=price, image = image)
                new.save()
                return HttpResponseRedirect('/results/' + uisbn)
        else:
            if (not (Posting.objects.filter(Q(user = curuser) & Q(textbook = text)))):
                new = Posting(textbook = text, user = curuser, post_date = datetime.now(), condition=condition, price=price)
                new.save()
                return HttpResponseRedirect('/results/' + uisbn)

    return render_to_response(
        'textchange/addposting.html',
        locals(),
        context_instance=RequestContext(request)
        )

在添加公告.html-形式

<form action="{% url 'textchange:addposting' uisbn=text.isbn %}" method="POST" enctype="multipart/form-data"> {% csrf_token %}
   {{ form.as_p }}
   <input type="submit" value="Add a Posting"></input>
</form>

查看图像的模板

{% block content %}
    <img src="{{ posting.image.url }}">
{% endblock %}

另外一个我不明白的问题是我什么时候开始用这个应用程序进行生产。人们的照片要上传到哪里?在

谢谢。在


Tags: textpy图像imageformdatemodelsrequest