Вызовите метод в views.py из шаблона - PullRequest
0 голосов
/ 10 октября 2019

Я хочу вызывать метод в views.py из моего HTML-файла в шаблонах, когда пользователь проходит проверку подлинности. Я не знаю, какой синтаксис 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 голосов
/ 10 октября 2019

Единственный способ, которым я мог убедиться, что это сделано, - это написать собственный шаблонный тег (что-то, о чем вам, вероятно, следует задать конкретный вопрос в вашем случае использования), или использовать что-то вроде Ajax и POST, чтобы сделать что-то после загрузки страницы. с помощью Javascript. Вы хотели бы сделать что-то вроде этого:

В этом примере используется JQuery

Код шаблона

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

Приведенный выше код выполняет запрос POST дляданный URL.

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

Это делает все, что вы хотите сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...