如何通过Django中的模板通过按钮调用视图函数?

时间:2018-07-19 14:07:42

标签: html django python-3.x django-templates django-views

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

我有一个基本的html文件,并且有一个应该从view.py文件运行功能的按钮。这是按钮代码;

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

这是我在view.py文件中的功能;

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

在我的产品的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'),
]

通常,我在view.py文件中有一个IndexView类,该类列出了所有当前产品,并且我希望通过上述功能可以生成新产品,并且新产品也将在“产品”页面中列出。

顺便说一句,上面的函数不在IndexView类中。

1 个答案:

答案 0 :(得分:0)

您将与action="#"停留在同一页面上
请改用action="",这样您将停留在同一页面上但已重新加载。
更新
阅读您的评论。
name参数可用于在Django模板中调用您的网址,例如:

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>