Код используется для отображения входных полей на основе различных типов расходов в форму редактирования < /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
Динамически визуализированные входы не проводятся до запроса POST? ⇐ Html
Программисты Html
-
Anonymous
1738099246
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)
Подробнее здесь: [url]https://stackoverflow.com/questions/79392257/the-dynamically-rendered-inputs-are-not-being-pulled-through-to-the-post-request[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия