【问题标题】:cannot upload image in django modelform无法在 django modelform 中上传图片
【发布时间】:2015-01-27 07:23:30
【问题描述】:

您好,我在 django 中制作了一个具有图像字段的表单,但我无法上传图像

我的意见.py-

def fill(request):
    global firstname, lastname, email, roomnumber, hostel, hometown, homestate, gender, year, branch, age, dateofbirth, formdata, photo
    if request.method == 'POST':
        formdata = Studentbiodata(request.POST, request.FILES)
        if formdata.is_valid():
            post = request.POST
            firstname = post['first_name']
            lastname = post['last_name']
            email = post['email']
            roomnumber = post['room_number']
            hostel = post['hostel']
            hometown = post['home_town']
            homestate = post['home_state']
            gender = post['gender']
            year = post['year']
            branch = post['branch']
            age = post['age']
            dateofbirth = post['date_of_birth']
            photo = request.FILES['photo']
            return redirect('/student/confirm')
    else:
        formdata = Studentbiodata()
    return render(request, 'student/fillform.html', {'form': formdata})

def confirm(request):
    if request.method == 'POST':
        if 'confirm' in request.POST:
            data = formdata.save()
            return redirect('/student/lastpage')
        elif 'edit' in request.POST:
            return redirect('/student/fillform')
    return render(request, 'student/confirm.html', {'first_name': firstname, 'last_name': lastname, 'gender': gender, 'date_of_birth': dateofbirth, 'branch': branch, 'year': year, 'hostel': hostel, 'room_number': roomnumber, 'home_town': hometown, 'home_state': homestate, 'email': email, 'photo': photo })

我的models.py-

class Biodata(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    gender = models.CharField(max_length=10, choices=gender_choices)
    age = models.PositiveSmallIntegerField(default=0)
    date_of_birth = models.DateField()
    year = models.CharField(max_length=2, choices=year_choices)
    branch = models.CharField(max_length=25, choices=branch_choices)
    room_number = models.PositiveSmallIntegerField(default=0)
    hostel = models.CharField(max_length=15, choices=hostel_choices)
    home_town = models.CharField(max_length=30)
    home_state = models.CharField(max_length=20, choices=state_choices)
    email = models.EmailField(max_length=50)
    photo = models.ImageField(upload_to='',blank=True)

我的设置.py-

MEDIA_ROOT = '/home/details/student/media/'

MEDIA_URL = '/media/'

在 confirm.html 模板之后,它在 /student/confirm/ 处给出错误 OSError

[Errno 13] 权限被拒绝:'/home/details'

请帮助我,因为我不知道如何解决这个问题...

提前致谢

【问题讨论】:

  • 您需要检查位于settings.py 中的MEDIA_ROOT 的权限。如果您尚未设置媒体配置,则需要先进行设置,然后才能开始上传图片。
  • 这是我的 settings.py ..现在你能告诉我我应该做些什么改变来使它工作..??

标签: python django django-file-upload


【解决方案1】:

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

检查您是否在表单中包含了 enctype。

【讨论】:

  • 我确实包含了 enctype...但仍然存在此错误,我不知道如何解决它..:(...任何其他建议..??
  • 权限被拒绝错误是因为对您的上传路径的写入权限。检查这个 [链接] (stackoverflow.com/questions/11392309/…)
猜你喜欢
  • 2018-05-22
  • 2011-11-07
  • 2013-11-06
  • 2011-04-14
  • 2015-07-01
  • 2013-04-07
  • 1970-01-01
  • 2017-05-16
  • 1970-01-01
相关资源
最近更新 更多