Python 如何基于包含FileField的模型在DjangoWebApp中获取文件名?
我制作了一个电子邮件发送WebApp,我有一个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
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
那么?它可以工作是的,但是如果您可以编辑并添加一些内容,我将接受您的答案。