我正在使用django-excel设置导出工具以实现优势,但我遇到属性错误'int' object has no attribute 'encode'
时遇到问题
我的form
转换为excel,有人可以解释我为什么会收到此错误,这里有完整的追溯link。
from django.http import HttpResponseBadRequest
from django.http import HttpResponseForbidden
from django.views.generic import FormView
from django import forms
import django_excel as excel
class UploadFileForm(forms.Form):
file = forms.FileField()
ignore_first_columns = forms.IntegerField()
class ExportMailXls(FormView):
template_name = 'vinclucms_sales/export_email/export_sales_email_xls.html'
form_class = UploadFileForm
def get(self, request, *args, **kwargs):
form_class = self.get_form_class()
form = self.get_form(form_class)
if request.user.is_staff:
return self.render_to_response(
self.get_context_data(form=form,
can_submit=True,))
else:
return HttpResponseForbidden()
def post(self, request, *args, **kwargs):
form_class = self.get_form_class()
form = self.get_form(form_class)
if request.user.is_staff:
if form.is_valid():
column_ignore_index = form.cleaned_data['ignore_first_columns']
if not column_ignore_index:
column_ignore_index = 0
filehandle = request.FILES['file']
xls_book = filehandle.get_book()
for sheet in xls_book:
for k1, v1 in enumerate(sheet.rows()):
if k1 > 0:
for k2, v2 in enumerate(v1):
if k2 >= column_ignore_index:
uni_str_escaped = v2.encode("unicode-escape") \
.replace('\\x','\\u00') \
.replace('\\\\u','\\u')
sheet[k1, k2] = uni_str_escaped
return excel.make_response(xls_book, "xls", file_name="converted")
else:
return HttpResponseBadRequest()
else:
return HttpResponseForbidden()
追溯:
Traceback:
File "/home/vagrant/virtualenv/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
132. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/vagrant/virtualenv/local/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
22. return view_func(request, *args, **kwargs)
File "/home/vagrant/virtualenv/local/lib/python2.7/site-packages/django/views/generic/base.py" in view
71. return self.dispatch(request, *args, **kwargs)
File "/home/vagrant/virtualenv/local/lib/python2.7/site-packages/django/views/generic/base.py" in dispatch
89. return handler(request, *args, **kwargs)
File "/home/vagrant/vincluos/VincluCMSProject/vinclucms_sales/views/export_sales_email_xls.py" in post
44. uni_str_escaped = v2.encode("unicode-escape") \
Exception Type: AttributeError at /sales/export_sales_mail_xls/
Exception Value: 'int' object has no attribute 'encode'