Не работает нажатие кнопки в веб-приложении Python & Django

У меня было веб-приложение, разработанное другим человеком, который больше не хочет помогать с ошибками. У меня есть некоторый опыт, но, по-видимому, недостаточный для решения этой проблемы.

В веб-приложении есть кнопка, при нажатии на которую ничего не происходит. Она должна сохранять информацию о пользователе в базе данных. Я не понимаю, как событие щелчка связано с возможным файлом views.py.

В моем templates/add-inventory.html я вижу:

<a href="{% url 'crm:inventory' %}" class="btn btn-light rounded-pill me-1"> Cancel </a>
 <button type="submit" class="btn btn-success rounded-pill"> Save </button>

Кнопка сохранения ничего не делает. Я вижу в файле views.py:

@login_required(login_url='crm:login')
@permission_required("crm.add_inventory", raise_exception=True)
def addInventory(request):
    form = InventoryForm()
    staff = User.objects.all().order_by('first_name')
    vendor_form = VendorForm()

    
    if request.method == 'POST':
        form = InventoryForm(request.POST)
        if form.is_valid():
            inventory_instance = form.save()
            
            if not request.POST.get('vendor'):
                vendor_form = VendorForm(request.POST)
                
                if vendor_form.is_valid():
                    vendor = vendor_form.save(commit=False)
                    vendor.added_by = request.user
                    vendor.save()
                    inventory_instance.vendor = vendor
                    inventory_instance.save()
                
            stocks = request.POST.getlist('stock')
            for i in range(len(staff)):
                if int(stocks[i]) > 0:
                    InventoryStock.objects.create(
                        inventory = inventory_instance,
                        user = staff[i],
                        stock = stocks[i]
                    )
                    
            messages.success(request, 'Item added successfully')
            return redirect('crm:inventory')

Как кнопка вызывает код в файле views.py? Любая помощь будет принята с благодарностью. Я загрузил все файлы локально и использую VS Code для отладки, но не достиг никакого прогресса.

Я добавил name=addInventory" в файл add-inventory.html, как показано ниже. Это ничего не дало.

<a href="{% url 'crm:inventory' %}" class="btn btn-light rounded-pill me-1"> Cancel </a>
 <button type="submit" class="btn btn-success rounded-pill" name="AddInventory"> Save </button>

Ниже приведен код из файла urls.py, как и просили. Надеюсь, это та информация, которая вам была нужна.

 path('inventory', inventory, name='inventory'),
 path('inventory/add', addInventory, name='add-inventory'),   
 path('inventory/update/<int:pk>', updateInventory, name='update-inventory'),
 path('inventory/delete/<int:pk>', deleteInventory, name='delete-inventory')

Полагая, что вы уже указали app_name = "crm" в вашем urls.py, вам нужно просто изменить url вашей кнопки на {% url 'crm:add-inventory' %} имя, которое вы указали в вашем urls.py файле.

Если вы уже настроили VSCode на отладку должным образом, вы должны иметь возможность поставить точки останова в представлении inventory и в представлении addInventory, вы заметите, что вызываете первую, поскольку ее имя - inventory

Более общее объяснение

Вот как работает django.

  1. Первый пользователь нажимает на button / link
  2. Это button or link пост или запрос информации от конкретного url
  3. Этот url mast соответствует одному из django urls.py
  4. Это url должно быть связано с view внутри views.py, это представление является местом, где происходят реальные операции

Проблема может быть

  • точка разрыва в приведенной выше связке.

Или

  • ошибка в представлении/коде django

Ответ :-

По данной информации мы видим только 1,3,4 шаги.

  • Мы не можем увидеть post form action value в приведенной информации по вопросу.

Или

  • мы не видим javascript/jquery код для пользовательской формы post/upload.

Один из них - обязателен.

Так,

выделите клапан действия post-формы и проверьте, совпадает ли он с клапаном из django urls.py.

Или

Чек в пользовательской форме submit js/jquery код для валидного url.

Вернуться на верх