#django #modal-dialog
#django #модальный диалог
Вопрос:
Я запутался, как загрузить файл в БД по форме в модальном режиме, поскольку он не отображал форму после того, как я нажал кнопку для модального исчезновения.
число просмотров:
def user_info(request):
user = request.user
orders = Order.objects.filter(user=request.user, ordered=True).order_by('-start_date')
order_items = OrderItem.objects.filter(user=request.user)
context = {
'user': user,
'orders': orders,
'order_items': order_items,
'form': form
}
return render(request, 'userinfo.html', context)
def upload_page(request, id):
order = get_object_or_404(Order, id=id)
form = Upload_File(request.POST or None, request.FILES or None, instance=order)
if request.method == 'POST':
if form.is_valid():
form.save()
order.save()
messages.success(request, 'Succeed')
return redirect('user_info')
else:
messages.warning(request, 'Failed')
return redirect('user_info')
else:
form = Upload_File()
context = {
'form': form,
'order': order
}
return render(request, 'payment_upload.html', context)
шаблон, включающий модальный:
{% for order_item in orders %}
<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#upload-{{ order_item.id }}">
Open Modal</button>
{% endfor %}
модальный шаблон:
<form method="post" enctype="multipart/form-data" action="{% url 'upload_page' id=order_item.id %}">
{% csrf_token %}
{{ form }}
<button class="form-group btn btn-success" type="submit">Confirm</button>
</form>
Комментарии:
1. Я не уверен, в чем проблема, отображается ли какое-либо сообщение об ошибке или в чем смысл?
2. форма не может отображаться в модальном
Ответ №1:
Поправьте меня, если я ошибаюсь, Но внутри вашего def user_info(запроса):… Я не вижу никакого импорта для form
или какого-либо объявления.
Которую вы используете в своем контексте
context = {
'user': user,
'orders': orders,
'order_items': order_items,
'form': form
}
Вы должны объявить свой
форма = Upload_File(запрос.ОПУБЛИКОВАТЬ или нет, запросить.ФАЙЛЫ или нет, экземпляр = порядок)
в верхней части всего, def()
чтобы к нему можно было получить доступ глобально для всех остальных def() methods
.