Python 和 Django Web 应用程序按钮单击不起作用

问题描述 投票:0回答:1

我有一个由另一个人开发的网络应用程序,他不再愿意帮助解决错误。我有一些经验,但显然不足以解决这个问题。

在网络应用程序中,有一个按钮在单击时不执行任何操作。它应该将用户信息保存到数据库中。我不明白点击事件如何与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')
python django button
1个回答
0
投票

假设您已经在

app_name = "crm"
中提供了
urls.py
,您只需将按钮的 url 更改为
{% url 'crm:add-inventory' %}
您在
urls.py
文件中提供的名称。

如果您已经设置 VSCode 来正确调试,您应该能够在

inventory
视图和
addInventory
视图中放置断点,您会注意到您正在调用第一个,因为它的名称是 inventory

© www.soinside.com 2019 - 2024. All rights reserved.