html - 如何通过 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
类内部。
解决方案
您将与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>
推荐阅读
- c++ - C++ 协程:从最终挂起点调用“handle.destroy”是否有效?
- excel - 在 vba excel 中将日期与 DateTime.Now 进行比较
- python - Python Selenium - 禁用镀铬标签睡眠/休眠
- pandas - Pandas 中的重复测量方差分析,不同列中的因变量值
- scala - 带有 Spylon-Kernel 的 Jupyter 中 spark.implicits._ 的问题
- python - 如何从图像中删除相邻的重复像素?
- sql - 对行进行分组,同时排除特定列上的空值并聚合另一个
- typescript - TypeScript:如何初始化依赖于 T 的通用类的成员?
- typo3 - TYPO3 10.4.12 optionSplit in IMAGE srcset
- r - 循环数据框的列