无法从用户上传图片,但能够从django的管理员

时间:2015-03-09 13:15:15

标签: python django

我无法从html页面上传图片,但可以从管理页面上传 这是我的models.py:

def get_upload_file_name(instance,filename):
  return "image/%s_%s"%(str(time()).replace('.','_'),filename)

class Company_Profile(models.Model):
 user = models.ForeignKey(User)
 name = models.CharField(_('Company Name'), max_length= 30)
 logo = models.FileField(_('Company Logo'), upload_to=get_upload_file_name)
 address = models.TextField(_('Contact Address'), max_length=50)
 phone_no = models.IntegerField(_('Contact No'), max_length=12)

my views.py:

def company_prof(request):
 if request.method == 'POST':
    comp_prof = Company_Prof(request.POST, request.FILES)
    if comp_prof.is_valid():
        save_prof = comp_prof.save(commit=False)
        save_prof.user = request.user
        save_prof.save()
        messages.success(request, 'Thank you for Registration')
        return HttpResponseRedirect('company/'+str(save_prof.id))
 else:
    comp_prof =Company_Prof()
 variables = RequestContext(request, {
    'comp_form': Company_Prof()})
 return render_to_response("comp_profile.html",
                          locals(),
                          context_instance = RequestContext(request))

我的settings.py是:

MEDIA_ROOT ='G:\Mini project\Pycharm projects\project4\static/'
MEDIA_URL = ''

html页面是:

<form enctype="application/x-www-form-urlencoded" class="global_form"            action="" method="post"><div><div><h3>Create Account</h3>
<div id="connect_signup_box" class="connect_box_form clearfix">
  <form method="POST" enctype="multipart/form-data">{% csrf_token %}
    {{ comp_prof.as_p }}

    <input type="submit" class="btn btn-success" value="submit">
    {% if save_prof %}
    <h3>The details are submitted</h3>

    {% endif %}
  <input type="reset" class="btn" value="cancel">
   {% if value == 'cancel' %}
   <h3>Canceled</h3>
   {% endif %}
   </form>
  </div>
  </div>
  </div>
  </form>

当我提交时说没有选择任何文件。但从管理页面没有问题。 帮帮我......

1 个答案:

答案 0 :(得分:0)

我认为问题是您有嵌套表单,浏览器不支持这些表单(Can you nest html forms?)。

所以我假设浏览器只是使用了第一个表单定义,它具有错误的enctype。尝试删除第一个表单声明,并保留此声明:<form method="POST" enctype="multipart/form-data">