从模板中的views.py中调用方法

时间:2019-10-10 16:17:06

标签: html django python-3.x

我想在验证用户身份后从模板中的HTML文件调用views.py中的方法。我不知道在这里应该使用什么HTML语法。我认为表单或按钮不起作用,因为我想简单地调用该方法而不让用户单击任何按钮。

{% block content %}
{% if user.is_authenticated %}
    <!-- I want to call the method here-->

    <div id="user-logout">Hi {{ user.username }}! <a href="{% url 'logout' %}">logout</a></div>
    {% block chess_page %}
    {% endblock %}

<!-- else redirect to the login page -->
{% else %}
    <meta http-equiv="REFRESH" content="0; {% url 'login' %}">
{% endif %}

{% endblock %}

1 个答案:

答案 0 :(得分:1)

我可以看到的唯一方法是编写一个自定义模板标签(您可能应该在用例中提出一个特定的问题)或在页面加载后使用Ajax和POST之类的方法来做使用Javascript。您可能想要执行以下操作:

此示例使用JQuery

模板代码

$(document).ready(function(){
$.ajax({ url: "{% url 'thing_you_want_2_do' %}",
        context: document.body,
        method : "POST",
        success: function(){
           alert("done");
        }});
});

以上代码对指定的URL执行POST请求。

urls.py

path('/todoitem', views.thing_you_want_to_do, name='thing_you_want_2_do'),

这只是将请求路由到您要处理的特定Python代码块。

查看代码

@require_http_methods(["POST"])
def thing_you_want_to_do (request):
  #do thing you want to do when the page loads
  return #whatever you want to return

这可以完成您想做的任何事情。