Mezzanine中的文件上传

1 投票
1 回答
1126 浏览
提问于 2025-04-18 01:37

我无法上传我的文件上传程序。我在Django中创建了一个小项目,用来上传和下载文件。这个项目之前运行得很好。现在我在Mezzanine中尝试这个功能,为此我创建了以下模型:

from django.db import models
from django.contrib.auth.models import User
from mezzanine.pages.models import Page
from time import time

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


GENDER = (('----','Please Select ...'),('male','Male'), ('female','Female'))
class AllUsers(models.Model):
    FullName = models.CharField(max_length=300)
    DOB = models.DateField()
    Gender = models.CharField(max_length=7, choices = GENDER)
    HomeAddress = models.TextField()
    Contact = models.CharField(max_length=300)
    Email = models.EmailField()
    CV = models.FileField(upload_to = get_upload_file_name)

表单如下:

class UserForm(forms.ModelForm):
    class Meta:
        model = AllUsers
        fields = ['FullName' ,'DOB' ,'Gender','HomeAddress','Contact','Email','CV','UserDepartment']

用于表单的HTML页面

<form action="/users/" method="post" enctype="multipart/form-data">{%csrf_token%}
     <fieldset>
        {{id}}
    <legend>Users Profile</legend>
    {% fields_for form %}
    <div class="form-actions">
        {% block account_form_actions %}
        <input class="btn btn-primary btn-lg pull-right" type="submit" value="Submit">
        {% endblock %}
    </div>
    </fieldset>
</form>

问题:我上传文件后点击提交按钮,结果它把我带回了HTML表单页面,并且把我上传的文件删掉了,还让我重新上传文件。

1 个回答

3

我不会删除这个问题,因为这可能对你有帮助!

你的表单没有上传文件。别担心,看看下面:

症状

你在表单中有 FileField() 和 ImageField() 字段,但提交表单时文件没有被上传。

可能的原因

你在创建表单对象时,可能没有包含 request.FILES 这个参数。

解决办法

确保在创建表单对象时,始终传入 request.FILES:

form = MyForm(request.POST, request.FILES)

*更多详情: https://code.djangoproject.com/wiki/NewbieMistakes

撰写回答