【问题标题】:Problems with Django ImageField uploadDjango ImageField 上传问题
【发布时间】:2016-02-10 03:49:07
【问题描述】:

我有一个问题,我写了和平的 Djnago 代码,为用户上传个人资料图片,从管理区域模型工作正常,但是从网站本身图像无法上传,似乎甚至没有调用代码。这是我的代码,你能检查并告诉我可能有什么问题吗?

models.py:

from django.conf import settings
from django.db import models
from django.core.files import File

def upload_location(instance, filename):
    location = str(instance.user.id)
    return "%s/%s" %(location, filename) 

class ProfilePicture(models.Model):
    user = models.ForeignKey(User)
    profile_picture = models.ImageField(upload_to=upload_location, null=True, blank=True)

    def __unicode__(self):
        return unicode(self.user.id)

forms.py:

from django import forms
from .models import ProfilePicture

class ProfileEditPicture(forms.ModelForm):
    class Meta:
        model = ProfilePicture
        fields = [
        "profile_picture"
        ]

views.py:

from django.contrib.auth.decorators import login_required
from django.contrib.auth import get_user_model
from django.shortcuts import render, get_object_or_404, render_to_response
rom .forms import ProfileEditPicture
from .models import ProfilePicture

@login_required()
def profile_picture(request, id):
    user = get_object_or_404(User, id=id)
    title = "Profile Edit"
    profile, created = Profile.objects.get_or_create(user=user)
    form = ProfileEditPicture(request.POST, request.FILES)
    if form.is_valid():
            instance = form.save(commit=False)
            instance.user = request.user
            instance.save()
    context = {
        "form":form,
        "title":title,
        "profile":profile
    }
    return render(request, "profile/form.html", context)

urls.py:

urlpatterns = [
    ...
    url(r'^profile_picture/(?P<id>[\w.@+-]+)/', 'profiles.views.profile_picture', name='profile_picture'),
    ...
]

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

模板中的 HTML 代码是默认的 django 格式。

提前致谢:)

【问题讨论】:

  • 你是否加入了enctype="multipart/form-data"?
  • 我应该在哪里包含它?在forms.py中?我必须导入一些东西才能使用它?

标签: python django upload imagefield


【解决方案1】:

一个有用的文档是"Binding uploaded files to a form"。如果你遵循这个,你可能会克服你的问题。

除其他外,在表单元素中包含此属性很重要:

<form method="post" action="..." enctype="multipart/form-data">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 2013-01-10
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    相关资源
    最近更新 更多