Я создал следующий сценарий JS, чтобы отобразить либо ссылку для выхода пользователя из системы, либо отправить его на страницу входа независимо от того, аутентифицированы они или нет с помощью {{user.is_authenticated}}
.
. находится в моей базе. html шаблон.
база. html без использования внешних js
{% load staticfiles %}
<script src="{% static 'forum/js/main.js' %}"></script>
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>{% block title %}{% endblock title %}</title>
<style media="screen">
#log_block {
display: flex;
};
.hide {
display: none;
};
</style>
</head>
<body onload="startTime('clock')">
<div id="clock">
</div>
<div id="log_block">
<div id="logging">
</div>
<span> - <a href="{% url 'signup' %}">Register</a> - <a href="{% url 'home' %}">Home</a> - <a href="{% url 'forum-home' %}">Forums</a></span>
</div>
<main>
{% block content %}{% endblock content %}
</main>
</body>
</html>
<script type="text/javascript">
var hide = '{{ user.is_authenticated|yesno:"true,false"|safe }}';
if (hide == "true") {
document.getElementById('logging').innerHTML = "<a href=\"{% url 'logout' %}\">Logout</a>";
}
else if (hide == "false"){
document.getElementById('logging').innerHTML = "<a href=\"{% url 'login' %}\">Login</a>";
}
</script>
При проверке элементов, шаблон URL переменная правильно отображает ссылку.
<a href="/david_site/login/">Login</a>
Теперь у меня есть внешний файл JS, который я использовал для репликации того же кода, но по какой-то причине шаблон URL не работает. Ниже я опубликую созданную мной функцию c для репликации тех же результатов.
base. html
<script type="text/javascript">
hide_log('{{ user.is_authenticated|yesno:"true,false"|safe}}', 'log_block', 'logging');
</script>
main. js
function hide_log(authorized, element){
var hide = document.getElementById(element);
console.log(hide);
if (authorized == "true") {
hide.innerHTML = "<a href=\"{% url 'logout' %}\">Logout</a>";
}
else if (authorized == "false"){
hide.innerHTML = "<a href=\"{% url 'login' %}\">Login</a>";
}
}
Привязка тега появляется, но кажется, что переменная шаблона не отображается должным образом, если я снова проверяю свою страницу шаблона, я получаю следующее ..
<a href="{% url 'logout' %}">Logout</a>
Когда скрипт находится внутри базы. html {% url 'logout' %}
result: /david_site/login/
,
Когда скрипт находится внутри main. js и вызывается из базы. html {% url 'logout' %}
результат: {% url 'logout' %}