Динамически визуализированные входы не проводятся до запроса POST?Html

Программисты Html
Ответить
Anonymous
 Динамически визуализированные входы не проводятся до запроса POST?

Сообщение Anonymous »

Код используется для отображения входных полей на основе различных типов расходов в форму редактирования < /p>
// Clear previous fields
dynamicFieldsContainer.innerHTML = '';

// Inject fields dynamically
for (const [key, value] of Object.entries(data.fields)) {
// Skip fields that are null or undefined
if (value === null || value === undefined) continue;

const field = `

${key.replace('_', ' ').toUpperCase()}

`;
dynamicFieldsContainer.insertAdjacentHTML('beforeend', field);
}
< /code>
Это скрытые поля, которые уже присутствуют в форме и заполнены сценарием JS, являются единственными полями, присутствующими в запросе Post < /p>
// Set hidden ID field
document.getElementById('expense-id').value = data.id;
// Set hidden expense-type field
document.getElementById('expense-type').value = data.type;
< /code>
Текущая HTML -структура, которая показывает форму и действие POST, а также скрытые и динамически рендеринг HTML -тегов < /p>

{% csrf_token %}

Edit Expense









Cancel
Save Changes


< /code>
Скрипт на стороне клиента, используемый для обновления записи в db < /p>
// Handle form submission
const form = document.getElementById('editExpenseForm');
form.addEventListener('submit', function (event) {
event.preventDefault();
const formData = new FormData(form);

// Debug: Log form data
for (let [key, value] of formData.entries()) {
console.log(`${key}: ${value}`);
}

fetch(form.action, {
method: 'POST',
body: formData,
})
.then(response => response.json())
.then(data => {
if (data.success) {
bootstrap.Modal.getInstance(editModal).hide();
const confirmationModal = new bootstrap.Modal(document.getElementById('confirmationModal'));
confirmationModal.show();
setTimeout(() => confirmationModal.hide(), 1500);
} else {
alert('Error updating expense: ' + data.error);
}
< /code>
Скрипт бэкэнд, используемый для обновления DB, однако, request.post показывает только три поля, которые представляют собой скрытые входы, показанные выше в коде HTML, а также токен CSRF, но ни один из других полей показаны при подаче запроса отправки < /p>
@login_required
def update_expense(request):
if request.method == 'POST':
expense_id = request.POST.get('expense-id')
expense_type = request.POST.get('expense-type')
expense_model = {
'Driver Salary': DriverSalary,
'Vehicle Repair': VehicleRepair,
'Mileage': Mileage,
'Other Expense': OtherExpense,
'Vehicle Tracker': VehicleTracker,
}.get(expense_type)

expense = get_object_or_404(expense_model, id=expense_id)
print(request.body)
for field in expense._meta.get_fields():
if field.concrete and field.name in request.POST:
setattr(expense, field.name, request.POST.get(field.name))

expense.save()
return JsonResponse({'success': True})

return JsonResponse({'error': 'Invalid request'}, status=400)


Подробнее здесь: https://stackoverflow.com/questions/793 ... st-request
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Html»