Почему мой пользовательский скрипт отлично обрабатывает данные на локальном Django-сервере, но не на Digital Ocean App?
Кто-нибудь знает, почему когда я загружаю CSV файл локально на сервер разработки Django, мой код работает в плане обработки CSV файла и добавления данных в базу данных правильно, но когда я пытаюсь сделать то же самое с производственным сервером на Digital Ocean с помощью службы App - CSV файл просто загружается без обработки? Я заметил это потому, что при загрузке CSV-файла на рабочий сервер в Digital Ocean не добавляется новый продукт. Кстати, локальный сервер разработки также использует хранилище S3 - так что тот же самый файл был загружен на Amazon S3 - но код обрабатывает файл на сервере разработки, но не на рабочем сервере - сервер разработки находится на моем ноутбуке. Производственный сервер находится на Digital Ocean's App. В коде я сделал примерно следующее:
from django.core.files.storage import default_storage
def upload_csvs(request):
current_page_bread_crumb_title = 'upload csv'
form = CsvsModelForm(request.POST or None, request.FILES or None)
random_category = None
if form.is_valid():
form.save()
# reset form after save
form = CsvsModelForm()
# Only getting csv file that isn't activated or being used already.
get_csv_data = Csvs.objects.filter(activated=False).order_by('-id').first()
with default_storage.open(get_csv_data.file_name.name, mode='r') as f:
reader = csv.reader(f)
for i, row in enumerate(reader):
if i == 0:
pass
else:
random_category = choice([3, 4, 5, 6, 7, 8, 9, 10])
try:
Product.objects.create(product_name=row[0],
slug=row[0].lower().replace(' ', '-'),
product_description=row[1],
product_additional_description=row[2],
product_detail_banner_text=row[3],
product_zoom_content_1=row[4],
product_zoom_content_2=row[5],
product_zoom_content_3=row[6],
price=Decimal(row[7]),
stock=row[27],
is_available=row[28],
category=Category.objects.get(id=random_category),
homepage_display=row[30],
)
except ObjectDoesNotExist:
pass
get_csv_data.activated = True
get_csv_data.save()
context = {
'form': form,
'current_page_bread_crumb_title': current_page_bread_crumb_title,
}
return render(request, 'csvs.html', context)