python - 从 HTML 调用函数到 Python 文件
问题描述
我有一个带有“卡片”列表的 index.html 页面,其中每张卡片都有一个“点击选择”链接。
当用户单击此链接时,我想在 python 中调用一个函数来选择此项目,请参阅:
def selectItem(request, item):
#so something with this item
所以,在我的 html 页面中:
<div class="card-action">
<a href="{{ selectItem(myitem) }}">Selecionar</a>
</div>
这行不通。什么是正确的方法?
解决方案
你不能调用这样的函数。浏览器使用 HTTP 请求请求数据,服务器使用 (HTTP) 响应进行响应。这样的请求有一个 URL,Django 可以使用 URL 将请求路由到将计算响应的正确视图。
因此,我们需要构建一个可以调用的视图。您的电话已经很接近了:
# app/views.py
from django.http import HttpResponse
def select_item(request, item_id):
# so something with this item_id
# ...
return HttpResponse()
由于大多数对象是不可序列化的(通常你不希望这样,因为它会向用户公开大量(潜在敏感的)数据,因此我们需要使用一个id
(例如存储在数据库中的标识符)对应于一个对象)。
响应包含响应中的数据。通常这是由浏览器呈现的 HTML 代码。
现在urls.py
,我们可以指定 url 的样子,例如:
# app/urls.py
from django.urls import path
from app.views import select_item
urlpatterns = [
path('select_item/<int:item_id>/', select_item, name='select_item_view'),
# ...
]
urlpatterns
需要包含在根目录中urlpatterns
(在项目根目录中)。
现在在 HTML 模板中,我们可以生成与该视图匹配的 URL,类似于:
<div class="card-action">
<a href="{% url 'select_item_view' item_id=myitem.id %}">Selecionar</a>
</div>
然后,Django 将确保href
指向的 URL 指向select_item
具有正确参数的视图。
推荐阅读
- mongodb-query - 如何在 MongoDB 中查询数组?
- javascript - 将文本与背景图像底部对齐,大小包含
- c - sscanf - 多次使用相同的变量
- azure - 对 WebJob 是否失败感到困惑
- node.js - 当我在控制台中构建项目时,阻止 VS Code 打开 Web 浏览器窗口
- reactjs - 反应:当我点击父级时,音频元素只播放一次
- c++ - clang-tidy 忽略 Windows 上的可读性标识符命名
- python-2.7 - Matplotlib - 如何用不同的功能编辑同一个图?
- java - 如何避免JavaFX阴影效果覆盖旁边的按钮并且无法按下按钮?
- azure - 诊断登录