首页 > 解决方案 > 如何通过 Django 模板中的按钮调用视图功能?

问题描述

我已经搜索了一些相关的问题,但我不知道该怎么做。这就是为什么我在这里发布一个新问题。

我有一个base.html文件,并且有一个按钮应该从views.py文件中运行一个函数。这是按钮代码:

<form role="form" action="" method="POST">
{% csrf_token %}
  <input type="submit" class="btn" value="Click" name="mybtn">
</form>

这是我views.py文件中的函数:

def create_new_product(request):
    if request.method == 'POST':
        '''Execute the code here'''
    return render (request, 'products/base.html')

在我Products的 'urls.py文件中:

app_name = 'products'
urlpatterns = [
    path('create-new-product/', views.create_new_product),
    path('', views.IndexView.as_view(), name='base'),
    path('<int:pk>/', views.DetailView.as_view(), name='detail'),
]

通常我IndexView在文件中有一个类,views.py其中列出了所有当前产品,我对上述功能的期望是它将生成新产品,新产品也将列在“产品”页面中。

顺便说一下,上面的函数不在IndexView类内部。

标签: htmldjangopython-3.xdjango-templatesdjango-views

解决方案


您将与action="#"
Try保持在同一页面上,action=""因此您将保持在同一页面上但重新加载。
更新:
阅读您的评论。
name 参数对于在 Django 模板中调用您的 url 很有用,例如:

path('create-new-product/', views.create_new_product, name='create_new_product')

app_name = 'products' 非常重要。它告诉 Django 在哪里检查你的路径。因此,您可以通过以下方式在项目中的任何地方调用您的视图:

<a href="{% url 'products:create_new_product' %}">...</a>
<form action="{% url 'products:create_new_product' %}">...</form>

推荐阅读