Имеется такая страница. Нужно чтобы по нажатию кнопки выполнить, в функцие show_data создавалась переменная содержащая файл из поля input file. Загружать файл на сервер Django не нужно. Такой функционал уже реализован. Суть в том чтобы на этой странице получить именно файл из input в переменную. Надеюсь понятно объяснил. Если немного подробнее: я проверяю excel файл с другим excel файлом. Функционал всех проверок реализован. Но второй файл проверки пока что тупо подгружается с рабочего стола, а другой файл берется уже из БД. Для примера в конец вставил функцию проверки "Графика"
{% extends "base.html" %}
{% block title %}Проверка плана{% endblock title %}
{% block content %}
<div class="container" style="margin-top: 80px" >
<form enctype="multipart/form-data" action="" method="POST">
{% csrf_token %}
<br style="margin-top: 5px">
<h4>Выберите шаблон .xlsx:</h4>
<input style="" type="file" name="shablon" value="shablon" id="shablon">
<br>
<h4>Выберите параметры проверки:</h4>
<div>
<input type="checkbox" id="titul" name="titul" align="left">
<label for="scales">Титульный лист</label>
</div>
<div>
<input type="checkbox" id="grafik" name="grafik" align="left">
<label for="horns">График</label>
</div>
<div>
<input type="checkbox" id="plan" name="plan">
<label for="horns">План</label>
</div>
<div>
<input type="checkbox" id="plan_svod" name="plan_svod">
<label for="horns">План/Свод</label>
</div>
<div>
<input type="checkbox" id="comp" name="comp">
<label for="horns">Компетенции</label>
</div>
<div>
<input type="checkbox" id="All" name="all">
<label for="horns">Весь план</label>
</div>
<div>
<input type="checkbox" id="edit" name="edit">
<label for="horns">Заменить ошибочные данные</label>
</div>
<input type="submit" name="go" value="Выполнить" class="btn btn-primary"><br></br>
<a href="{% url "show_files" %}" class="btn btn-secondary"> На главную </a><br>
</form>
</div>
{% endblock content %}
View
def show_data(req, file_id):
file = Files.objects.get(file_id=file_id)
if req.method == "GET":
return render(req, "show_data.html", locals())
if req.method == "POST":
if 'titul' in req.POST:
file = Files.objects.get(file_id=file_id)
check_titul(req, file)
file = Files.objects.get(file_id=file_id)
if 'all' in req.POST:
check_all(req, file)
file = Files.objects.get(file_id=file_id)
if 'grafik' in req.POST:
file = Files.objects.get(file_id=file_id)
check_grafik(req, file)
file = Files.objects.get(file_id=file_id)
if 'plan' in req.POST:
file = Files.objects.get(file_id=file_id)
check_plan(req, file)
file = Files.objects.get(file_id=file_id)
if 'plan_svod' in req.POST:
file = Files.objects.get(file_id=file_id)
check_plan_svod(req, file)
file = Files.objects.get(file_id=file_id)
if 'comp' in req.POST:
file = Files.objects.get(file_id=file_id)
check_compititions(req, file)
file = Files.objects.get(file_id=file_id)
return render(req, "show_data.html", locals())
else:
return render(req, "show_data.html", locals())
def check_grafik(req,file):
wb = open_wb(file)
sheet_wb = wb['График']
shablon = openpyxl.load_workbook('C:/Users/user/Desktop/check.xlsx')
sheet_shablon = shablon['График']
name_file = give_name_file(file)
row_count = sheet_shablon.max_row
a = find_index(a='I', sheet = sheet_shablon, count=row_count) - 2
b = find_index(a='IV', sheet = sheet_shablon, count=row_count) + 6
list = give_list(2, 54, sheet = sheet_shablon, sheet2=sheet_wb, m=a, n=b)
wb.save('media/' + 'media/' + name_file + '.xlsx')
wb.close()
return locals()
shablon = openpyxl.load_workbook('C:/Users/user/Desktop/check.xlsx') Здесь как мы видим файл берется с рабочего стола. Хотелось бы сделать чтобы файл брался с поля input file