writer = csv.writer(response, delimiter=str(';'), quoting=csv.QUOTE_ALL)
import codecs
import six
...
response.write(codecs.BOM_UTF8)
writer = csv.writer(response)
...
writer.writerow([field.verbose_name.encode("utf8") for field in fields])
...
if isinstance(value, six.string_types):
data_row.append(value.encode('utf8'))
else:
data_row.append(value)
<form>
{{ article_form }}
{{ image_form }}
</form>
Вот тут else не пропущен?