Python 如何基于包含FileField的模型在DjangoWebApp中获取文件名?

Python 如何基于包含FileField的模型在DjangoWebApp中获取文件名?,python,django,web,django-models,django-views,Python,Django,Web,Django Models,Django Views,我制作了一个电子邮件发送WebApp,我有一个email类和uploadcsvfile将.csv联系人文件从用户的计算机上传到服务器的contact\u DIR,我不知道如何在我的views.py中获取保存的联系人的一些字符.csv名称,获取其名称的目的是,我可以解析电子邮件列表并向他们发送电子邮件 我的model.py如下所示: class Email(models.Model): fromemail = models.EmailField(blank = False, max_len

我制作了一个电子邮件发送WebApp,我有一个
email
类和
uploadcsvfile
.csv
联系人文件从用户的计算机上传到服务器的
contact\u DIR
,我不知道如何在我的
views.py
中获取保存的
联系人的一些字符.csv
名称,获取其名称的目的是,我可以解析电子邮件列表并向他们发送电子邮件

我的
model.py
如下所示:

class Email(models.Model):
    fromemail = models.EmailField(blank = False, max_length = 254)
    uploadcsvfile = models.FileField(upload_to = 'Contacts', blank = False)
    subject = models.CharField(blank=False,max_length = 254)
    bodyHeading = models.CharField(blank = False,max_length = 254)
    bodytext = models.TextField(blank = False)
    name = models.CharField(blank = False,max_length = 254)
这是我的
视图。py

def index(request):

    if request.method == 'POST':
        email_form = EmailForm(request.POST, request.FILES)
        if email_form.is_valid():
            email_form.save(commit = True)
            print(Email.uploadcsvfile)
            contacts = Contacts()
            #path = settings.CONTACT_DIR
            f = open(settings.CONTACT_DIR+"/"+str(uploaded_file_name))
            csv_f = csv.reader(f)
            Emails = []
            Names= []
            L_Names = []
            for x in csv_f:
                Emails.append(x[0])
                Names.append(x[1])
                L_Names.append(x[2])
            f.close()
            contacts.ListOfEmails = json.dumps(Emails)
            contacts.ListOfFirstNames = json.dumps(Names)
            contacts.ListOfLastNames = json.dumps(L_Names)
            contacts.save()
下面是相同的
forms.py

from django import forms
from dcsvreader.models import Email

class EmailForm(forms.ModelForm):
    class Meta():
        model = Email
        fields = "__all__"

A.K.A我如何在
views.py
中获得
上传的文件名
,我在S.O的各种QnA中读到,这与
文件描述符
有关,但找不到具体的打印方式(Email.uploadcsvfile)
作为输出。

我本人对django很陌生,但它看起来像这样:

print(Email.uploadcsvfile)
您正在尝试打印类属性,而不是实例的属性。 你试过以下方法吗

print(email_form.uploadcsvfile.name)
是一个类似字典的对象,包含所有上载的文件,
uploadcsvfile
是发出POST请求的键。因此,
request.FILES['uploadcsvfile']
将特定文件作为
保存在memoryUploadedFile
中,并且它有一个保存文件名的变量

试试这个,

file_name = request.FILES['uploadcsvfile'].name

参考


我已经试过了。获取此错误:AttributeError at/'EmailForm'对象没有属性'uploadcsvfile'Email是模型,Email\u表单只是形式
Email\u表单.model.uploadcsvfile.name
那么?它可以工作是的,但是如果您可以编辑并添加一些内容,我将接受您的答案。