У меня есть проект Django, в который я загружаю файлы на сервер sql. Я хотел бы показать только текстовое сообщение, когда операция была выполнена успешно, без обновления страницы
Мне не удалось связать представление с формой AJAX и HTML.
views.py:
def upload(request):
if request.method == "POST":
try:
form = UploadFileForm(request.GET, request.FILES["excel_file"])
file = request.FILES['excel_file']
Import_Resource = resources.modelresource_factory(model=item)()
dataset = tablib.Dataset()
if not file.name.endswith('.xlsx'):
messages.error(request, 'This is not a excel file!')
if filename1 in file.name:
imported_data = dataset.load(file.read(), format='xlsx')
item.objects.filter(input_type = 'traitement').delete()
for row in dataset:
ITEM2 = item()
ITEM2.input_type = 'traitement'
ITEM2.no_incident = row[1]
ITEM2.action = row[2]
ITEM2.week = row[4]
ITEM2.status = row[5]
ITEM2.assigned_by_group = row[6]
ITEM2.description = row[0]
ITEM2.previous_group = row[7]
if isinstance(row[3], float):
ITEM2.date_action = datetime.fromordinal(datetime(1900, 1, 1).toordinal() + int(row[3]) - 2)
else:
ITEM2.date_action = row[3]
if isinstance(row[8], float):
ITEM2.date_end = datetime.fromordinal(datetime(1900, 1, 1).toordinal() + int(row[8]) - 2)
else:
ITEM2.date_end = row[8]
ITEM2.save()
data = {
'file': file.name
}
return JsonResponse(data)
urls.py: url(r'^input/$', views.inputprocess, name='inputprocess'),
html файл:
<form action="{% url "upload" %}" method="POST" enctype="multipart/form-data" class="form-inline" style="margin-left: 50px">
<div class="form-group mb-2">
{% csrf_token %}
<input type="file" name="excel_file" id="excel_file" required="True">
</div>
<div class="form-group mb-2">
<button class="btn btn-primary" id="likebutton2"> <span class="glyphicon glyphicon-upload"></span>Upload</button>
</div>
<div>
{% if messages %}
{% for message in messages %}
{{ message }}
{% endfor %}
{% endif %}
</div>
</form>
<script type="text/javascript">
$('.likebutton').click(function(){
var catid;
catid = $(this).attr("data-catid");
$.ajax(
{
type:"GET",
url: "/upload",
dataType: 'json',
success: function(data)
{
alert(data.filename);
}
})
});
</script>
Теперь он возвращает пустую страницу с именем файла. Я хотел бы, чтобы он возвращал предупреждение с именем файла, не обновляя страницу. Любая помощь будет в основном оценена.