我有以下代码。它可以按我想要的方式完美地工作,但是我有一些问题。 1. CSV文件未写入 2.我得到一个对象的多次保存,而不是我想要的一次。 (主要问题) 3.如何将生成的模板作为电子邮件发送。
功能LCR的基本概念就是这样。
数据库中有一些城市或国家/地区代码。 我想将代码与用户上传的文件中的值进行比较。 比较值之后,我想查看以下结果 '1':[(“ PTCL”,“ 0.25”),(“ TATA”,“ 1.25”)]。 。 。 其中“ 1”是从用户文件中获取的值 “ PTCL,TATA”是用户 “ 0.25&1.25”是为该值提供的用户费率。
但是我得到了
{'25': ['Tata', ' 4.150', 'Tata', ' 4.150', 'Tata', ' 4.150', 'Tata', ' 4.150', 'Tata', ' 4.150', 'Tata', ' 4.150', 'PTCL', ' 0.888', 'PTCL', ' 0.888', 'PTCL', ' 0.888',
'PTCL', ' 0.888', 'PTCL', ' 0.888', 'PTCL', ' 0.888'],
'21': ['Tata', ' 4.150', 'Tata', ' 4.150', 'Tata', ' 4.150', 'Tata', ' 4.150', 'Tata', ' 4.150', 'Tata', ' 4.150',
'PTCL', ' 0.888', 'PTCL', ' 0.888', 'PTCL', ' 0.888', 'PTCL', ' 0.888', 'PTCL', ' 0.888', 'PTCL', ' 0.888'],
'48': ['Tata', ' 0.531', 'Tata', ' 0.531', 'Tata', ' 0.531',
'Tata', ' 0.531', 'Tata', ' 0.531', 'Tata', ' 0.531'],
'23': ['Tata', ' 4.150', 'Tata', ' 4.150', 'Tata', ' 4.150', 'Tata', ' 4.150', 'Tata', ' 4.150', 'Tata', ' 4.150',
'PTCL', ' 0.888', 'PTCL', ' 0.888', 'PTCL', ' 0.888', 'PTCL', ' 0.888', 'PTCL', ' 0.888', 'PTCL', ' 0.888'],
'33': ['Zong', ' 0.87', 'Zong', ' 0.87', 'Zong', ' 0.87', 'Zong', ' 0.87', 'Zong', ' 0.87', 'Zong', ' 0.87'],
'47': ['Tata', ' 0.531', 'Tata', ' 0.531', 'Tata', ' 0.531', 'Tata', ' 0.531', 'Tata', ' 0.531', 'Tata', ' 0.531'],
'44': ['Tata', ' 0.531', 'Tata', ' 0.531', 'Tata', ' 0.531', 'Tata', ' 0.531', 'Tata', ' 0.531', 'Tata', ' 0.531'],
'42': ['Tata', ' 0.531', 'Tata', ' 0.531', 'Tata', ' 0.531', 'Tata', ' 0.531', 'Tata', ' 0.531', 'Tata', ' 0.531'],
'41': ['Tata', ' 0.531', 'Tata', ' 0.531', 'Tata', ' 0.531', 'Tata', ' 0.531', 'Tata', ' 0.531', 'Tata', ' 0.531'],
'98': ['Tata', ' 1.260', 'Tata', ' 1.260', 'Tata', ' 0.205', 'Tata', ' 0.205', 'Tata', ' 0.030', 'Tata', ' 0.030', 'Tata', ' 0.305', 'Tata', ' 0.305', 'Tata', ' 1.260', 'Tata', ' 1.260', 'Tata', ' 0.205', 'Tata', ' 0.205', 'Tata', ' 0.030', 'Tata', ' 0.030', 'Tata', ' 0.305', 'Tata', ' 0.305', 'Tata', ' 1.260', 'Tata', ' 1.260', 'Tata', ' 0.205', 'Tata', ' 0.205', 'Tata', ' 0.030', 'Tata', ' 0.030', 'Tata', ' 0.305', 'Tata', ' 0.305', 'PTCL', ' 0.150', 'PTCL', ' 0.150', 'PTCL', ' 0.005', 'PTCL', ' 0.005', 'PTCL', ' 0.305', 'PTCL', ' 0.305', 'PTCL', ' 0.150', 'PTCL', ' 0.150', 'PTCL', ' 0.005', 'PTCL', ' 0.005', 'PTCL', ' 0.305', 'PTCL', ' 0.305', 'PTCL', ' 0.150', 'PTCL', ' 0.150', 'PTCL', ' 0.005', 'PTCL', ' 0.005', 'PTCL', ' 0.305', 'PTCL', ' 0.305', 'Zong', '0.044', 'Zong', '0.044', 'Zong', ' 5.395', 'Zong', ' 5.395', 'Zong', '0.044', 'Zong', '0.044', 'Zong', ' 5.395', 'Zong', ' 5.395', 'Zong', '0.044', 'Zong', '0.044', 'Zong', ' 5.395', 'Zong', ' 5.395'],
'451': ['Tata', ' 0.531', 'Tata', ' 0.531', 'Tata', ' 0.531', 'Tata', ' 0.531', 'Tata', ' 0.531', 'Tata', ' 0.531'],
'91': ['Tata', ' 1.260', 'Tata', ' 1.260', 'Tata', ' 0.205', 'Tata', ' 0.205', 'Tata', ' 0.030', 'Tata', ' 0.030', 'Tata', ' 0.305', 'Tata', ' 0.305', 'Tata', ' 1.260', 'Tata', ' 1.260', 'Tata', ' 0.205', 'Tata', ' 0.205', 'Tata', ' 0.030', 'Tata', ' 0.030', 'Tata', ' 0.305', 'Tata', ' 0.305', 'Tata', ' 1.260', 'Tata', ' 1.260', 'Tata', ' 0.205', 'Tata', ' 0.205', 'Tata', ' 0.030', 'Tata', ' 0.030', 'Tata', ' 0.305', 'Tata', ' 0.305', 'PTCL', ' 0.150', 'PTCL', ' 0.150', 'PTCL', ' 0.005', 'PTCL', ' 0.005', 'PTCL', ' 0.305', 'PTCL', ' 0.305', 'PTCL', ' 0.150', 'PTCL', ' 0.150', 'PTCL', ' 0.005', 'PTCL', ' 0.005', 'PTCL', ' 0.305', 'PTCL', ' 0.305', 'PTCL', ' 0.150', 'PTCL', ' 0.150', 'PTCL', ' 0.005', 'PTCL', ' 0.005', 'PTCL', ' 0.305', 'PTCL', ' 0.305', 'Zong', '0.044', 'Zong', '0.044', 'Zong', ' 5.395', 'Zong', ' 5.395', 'Zong', '0.044', 'Zong', '0.044', 'Zong', ' 5.395', 'Zong', ' 5.395', 'Zong', '0.044', 'Zong', '0.044', 'Zong', ' 5.395', 'Zong', ' 5.395'],
'93': ['Tata', ' 1.260', 'Tata', ' 1.260', 'Tata', ' 0.205', 'Tata', ' 0.205', 'Tata', ' 0.030', 'Tata', ' 0.030', 'Tata', ' 0.305', 'Tata', ' 0.305', 'Tata', ' 1.260', 'Tata', ' 1.260', 'Tata', ' 0.205', 'Tata', ' 0.205', 'Tata', ' 0.030', 'Tata', ' 0.030', 'Tata', ' 0.305', 'Tata', ' 0.305', 'Tata', ' 1.260', 'Tata', ' 1.260', 'Tata', ' 0.205', 'Tata', ' 0.205', 'Tata', ' 0.030', 'Tata', ' 0.030', 'Tata', ' 0.305', 'Tata', ' 0.305', 'PTCL', ' 0.150', 'PTCL', ' 0.150', 'PTCL', ' 0.005', 'PTCL', ' 0.005', 'PTCL', ' 0.305', 'PTCL', ' 0.305', 'PTCL', ' 0.150', 'PTCL', ' 0.150', 'PTCL', ' 0.005', 'PTCL', ' 0.005', 'PTCL', ' 0.305', 'PTCL', ' 0.305', 'PTCL', ' 0.150', 'PTCL', ' 0.150', 'PTCL', ' 0.005', 'PTCL', ' 0.005', 'PTCL', ' 0.305', 'PTCL', ' 0.305', 'Zong', '0.044', 'Zong', '0.044', 'Zong', ' 5.395', 'Zong', ' 5.395', 'Zong', '0.044', 'Zong', '0.044', 'Zong', ' 5.395', 'Zong', ' 5.395', 'Zong', '0.044', 'Zong', '0.044', 'Zong', ' 5.395', 'Zong', ' 5.395'],
'96': ['Tata', ' 1.260', 'Tata', ' 1.260', 'Tata', ' 0.205', 'Tata', ' 0.205', 'Tata', ' 0.030', 'Tata', ' 0.030', 'Tata', ' 0.305', 'Tata', ' 0.305', 'Tata', ' 1.260', 'Tata', ' 1.260', 'Tata', ' 0.205', 'Tata', ' 0.205', 'Tata', ' 0.030', 'Tata', ' 0.030', 'Tata', ' 0.305', 'Tata', ' 0.305', 'Tata', ' 1.260', 'Tata', ' 1.260', 'Tata', ' 0.205', 'Tata', ' 0.205', 'Tata', ' 0.030', 'Tata', ' 0.030', 'Tata', ' 0.305', 'Tata', ' 0.305', 'PTCL', ' 0.150', 'PTCL', ' 0.150', 'PTCL', ' 0.005', 'PTCL', ' 0.005', 'PTCL', ' 0.305', 'PTCL', ' 0.305', 'PTCL', ' 0.150', 'PTCL', ' 0.150', 'PTCL', ' 0.005', 'PTCL', ' 0.005', 'PTCL', ' 0.305', 'PTCL', ' 0.305', 'PTCL', ' 0.150', 'PTCL', ' 0.150', 'PTCL', ' 0.005', 'PTCL', ' 0.005', 'PTCL', ' 0.305', 'PTCL', ' 0.305', 'Zong', '0.044', 'Zong', '0.044', 'Zong', ' 5.395', 'Zong', ' 5.395', 'Zong', '0.044', 'Zong', '0.044', 'Zong', ' 5.395', 'Zong', ' 5.395', 'Zong', '0.044', 'Zong', '0.044', 'Zong', ' 5.395', 'Zong', ' 5.395']}
我想在结果中看到每个用户一次,但是我不确定为什么要多次显示。也许是循环问题。
第二个问题是我的CSV文件没有被写入,但这不是主要问题。请检查代码,看看是否有错误。
def LCR(request):
template = "LCR\LCRGen.html"
emailadd = Email.objects.all()
dest = Destination.objects.values_list('dest_num', flat=True)
ratelist = {}
csv_file = { }
data_set = { }
io_string = { }
vendor = RateFile.objects.values_list()
v_count = vendor.count()
for v_id, v_name, v_file in vendor:
vendor_name = str(v_name)
#converted into a string so that i may be used to reference for file creation with the vendor name. like this (csv_fileTata)
vendornames = str(v_name)
#converted into a string to use as an empty dict var name
vendornames = { }
for desNum in dest:
desNum = str(desNum)
for countvar in range(v_count):
csv_file[vendor_name] = RateFile.objects.get(id=v_id).ven_file
data_set[vendor_name] = csv_file[vendor_name].read().decode("UTF-8")
io_string[vendor_name] = io.StringIO(data_set[vendor_name])
next(io_string[vendor_name])
for column in csv.reader(io_string[vendor_name], delimiter=str(u",")):
#creates a dictionary with the name of the vendor,the number as key and rate as value
vendornames[column[0]] = column[1]
# csvfile.close()
for venNum, venValue in vendornames.items():
venlen = len(venNum)
deslen = len(desNum)
# csvfile = open('csvfile.csv','w')
if venlen >= deslen:
if desNum[:-1]==venNum[:-1] and desNum[:-2]==venNum[:-2] and desNum[:-3] == venNum[:-3]:
# print ('====================')
# print (venNum)
# print (desNum)
# print "Works well 1"
# print ('====================')
# ratelist[desNum] = [vendor_name, venValue]
# ratelist[desNum].append(venValue)
# rates = dict((desNum, tuple(vendor_name))
# for desNum, vendor_name in ratelist.items())
# thewriter.writerow
# ({'Destinations':[desNum], 'Vendors':[vendor_name], 'Rates':[venValue] })
ratelist.setdefault(
desNum, []).append(vendor_name)
ratelist.setdefault(
desNum, []).append(venValue)
if vendor_name and venValue in desNum:
print 'stuff'
else:
ratelist.setdefault(
desNum, []).append(vendor_name)
ratelist.setdefault(
desNum, []).append(venValue)
elif desNum[:-1] == venNum[:-2] and desNum[:-2] == venNum[:-3] and desNum[:-3] == venNum[:-4]:
# print ('====================')
# print (venNum)
# print (desNum)
# print (venValue)
# print "Works well 2"
# print ('====================')
# ratelist[desNum].append(vendor_name)
# rates = dict((desNum, tuple(venValue)) for desNum, vendor_name in ratelist.iteritems())
# thewriter.writerow({'Destinations':[desNum], 'Vendors':[vendor_name], 'Rates':[venValue]})
ratelist.setdefault(
desNum, []).append(vendor_name)
ratelist.setdefault(
desNum, []).append(venValue)
if vendor_name and venValue in desNum:
print 'stuff'
else:
ratelist.setdefault(
desNum, []).append(vendor_name)
ratelist.setdefault(
desNum, []).append(venValue)
elif desNum[:-1] == desNum[:-3] and desNum[:-2] == venNum[:-4] and desNum[:-3] == venNum[:-5]:
# ratelist[desNum].append(vendor_name)
# rates = dict((desNum, tuple(venValue)) for desNum, vendor_name in ratelist.iteritems())
# thewriter.writerow
# ({'Destinations':[desNum], 'Vendors':[vendor_name], 'Rates':[venValue] })
ratelist.setdefault(
desNum, []).append(vendor_name)
ratelist.setdefault(
desNum, []).append(venValue)
if vendor_name and venValue in desNum:
print "STUFF"
else:
ratelist.setdefault(
desNum, []).append(vendor_name)
ratelist.setdefault(
desNum, []).append(venValue)
# print ('====================')
# print (venNum)
# print (desNum)
# print (venValue)
# print "Works well3"
# print ('====================')
elif desNum[:-1] == venNum[:-4] and desNum[:-2] == venNum[:-5]:
# ratelist[desNum].append(vendor_name)
# rates = dict((desNum, tuple(venValue)) for desNum, vendor_name in ratelist.iteritems())
# thewriter.writerow
# ({'Destinations':[desNum], 'Vendors':[vendor_name], 'Rates':[venValue] })
ratelist.setdefault(
desNum, []).append(vendor_name)
ratelist.setdefault(
desNum, []).append(venValue)
if vendor_name and venValue in desNum:
print "FOUND"
else:
ratelist.setdefault(
desNum, []).append(vendor_name)
ratelist.setdefault(
desNum, []).append(venValue)
elif desNum[:-1] == venNum[:-5] and desNum[:-2] == venNum[:-6]:
# ratelist[desNum].append(vendor_name)
# rates = dict((desNum, tuple(venValue))
# for desNum, vendor_name in ratelist.iteritems())
# print rates
# thewriter.writerow
# ({'Destinations':[desNum], 'Vendors':[vendor_name], 'Rates':[venValue] })
ratelist.setdefault(
desNum, []).append(vendor_name)
ratelist.setdefault(
desNum, []).append(venValue)
if vendor_name and venValue in desNum:
print 'STUFF'
else:
ratelist.setdefault(
desNum, []).append(vendor_name)
ratelist.setdefault(
desNum, []).append(venValue)
else:
# thewriter.writerow({'Destinations': [desNum], 'Vendors': [
# vendor_name], 'Rates': [venValue]})
print "HELLO WORLD"
# thewriter.writerow(
# {'Destinations':desNum, 'Vendors':vendor_name, 'Rates':venValue})
# csvfile.close()
csvfile = open('csvfile.csv','w')
headers = ['Destinations', 'Vendors', 'Rates']
thewriter = csv.DictWriter(csvfile, fieldnames=headers)
thewriter.writeheader()
thewriter.writerow({'Destinations':venNum, 'Vendors':[vendor_name], 'Rates':[venValue] })
return render (request, template, {"ratelist": ratelist, "emailadd": emailadd } )
我希望我的结果显示类似这样的内容。
{'25':['Tata','0.25','PTCL','1.002','Zong','0.090']
'15':['Tata','1.25','PTCL','0.12','Zong','0.90']}