Вы должны учитывать, что ваш сценарий выполняется на клиентском сайте, тогда как функция view
выполняется на стороне сервера. Это одна из основных проблем, когда дело доходит до перемещения переменных с одного конца на другой.
Короче говоря:
Вам нужно будет сделать http-запрос с клиентского сайта (например, используя jQuery AJAX) для вызова view
. Затем вы можете передать переменную через AJAX в функцию view
и использовать ее для дальнейшего logi c.
Пример:
your. html
<script type="text/javascript">
// A CSRF token is required when making post requests in Django
// To be used for making AJAX requests in script.js
window.CSRF_TOKEN = "{{ csrf_token }}";
</script>
<div id="variable">Variable</div>
javascript
(function($) {
// trigger the logic on click of the container
$('#variable').on('click', function() {
// assign variable
var variable_for_view = $(this).html();
// make http request using AJAX
$.ajax({
type: 'post',
url: '/your_url/', // this is the mapping between the url and view
data: {
'variable': variable, // ! here is the magic, your variable gets transmitted to the server
'csrfmiddlewaretoken': window.CSRF_TOKEN
},
success: function(data) {
print(sliced_variable)
},
});
});
}(jQuery));
views.py
def your_view(request):
# Assign variable from AJAX request
variable = request.POST.get('variable')
print(variable)
variable.slice(3)
context = {
'sliced_variable': variable
}
return render(request, 'your.html', context)