从HTML调用函数到Python文件

时间:2018-09-09 13:53:04

标签: python django

我有一个index.html页面,其中包含“卡片”列表,其中每个卡片都有“点击选择”链接。

当用户单击此链接时,我想在python中调用一个函数来选择此项目,请参阅:

def selectItem(request, item):
    #so something with this item

所以,在我的html pagE中:

<div class="card-action">
                            <a href="{{ selectItem(myitem) }}">Selecionar</a>
                        </div>

这不起作用。正确的方法是什么?

1 个答案:

答案 0 :(得分:2)

您不能调用类似的函数。浏览器使用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中,我们可以指定网址的外观,例如:

# 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指向使用正确参数引用select_item视图的URL。