python-3.x 如何通过Django模板中的按钮调用视图函数?

9rbhqvlz  于 2022-12-27  发布在  Python
关注(0)|答案(2)|浏览(274)

我已经搜索了一些相关的问题,但我不知道如何做。这就是为什么我在这里张贴一个新的问题。
我有一个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'),
]

通常我在views.py文件中有一个IndexView类,它列出了所有当前产品,我期望从上述函数中得到的是,它将生成新产品,新产品也将列在“产品”页面中。
顺便说一下,上面的函数不在IndexView类中。

yuvru6vn

yuvru6vn1#

您将与action="#"保持一致
请尝试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>
3pvhb19x

3pvhb19x2#

您可以使用浏览器fetch API或jquery ajax来实现搜索功能
1.将js脚本包含到模板文件中
1.包括此js代码段

$(elementSelector).on("click", async (e) => {
 const fetchOptions = {}
 const response = await fetch(YOUR_URL, {...fetchOptions});
 const responseUrl = response.url // see fetch api docs
 window.location = responseUrl // if you want to redirect
)

相关问题