Использование значения атрибута объекта django в функции Javascript

У меня есть модель с именем VisitorInfo в models.py, которая выглядит следующим образом:

class VisitorInfo(models.Model):
    #To maintain clarity i am not showing all the fields.

    visitor_id      = models.CharField(max_length=120)
    pages_visited   = models.ManyToManyField(Page,blank=True)
    time_zone       = models.CharField(max_length=120, null= True, blank=True)
    ip              = models.CharField(max_length=120, null= True, blank=True)
    device_type     = models.CharField(max_length=120, null=True)

Ниже приведен вид, в котором я использую эту модель.

class Live_Now(LoginRequiredMixin, TemplateView):
    template_name = 'dashboard/live_now.html'

def get_context_data(self, **kwargs):
    context = super(Live_Now, self).get_context_data(**kwargs)
    search = self.request.GET.get('q')

    if search:
        if VisitorInfo.objects.filter(Q_filter).filter(active=True).count() >0:
            context['list_no'] = VisitorInfo.objects.filter(Q_filter).filter(active=True)
        else:
            context['list_no'] = "N"
    return context

Что мне нужно сделать, как только загрузится страница live_now.html и запустится представление Live_Now, откроется новая вкладка со следующим URL-адресом.

url = 54.161.109.227:5000/visitor_id 

Я знаю, что для открытия новой вкладки мне нужно записать скрипт в live_now.html, который выглядит следующим образом.

<script type='text/javascript>
window.open(url); // Above written url
</script>

Но как мне получить visitor_id посетителя во время выполнения. Получение visitor_id - это задача для функции python, а открытие новой вкладки - это функция javascript. Как передать значение переменной python в программе javascript?

На данный момент я получаю visitor_id первого посетителя в посетителях, и для этого я написал следующую функцию.

def myfunc():
    visitors= VisitorInfo.objects.all()
    for visitor in visitors[:1]:
        visitorId = visitor.visitor_id
        return str(visitorId)

в функции document.load вызовите ajax, который вызовет указанную выше функцию, чтобы вернуть идентификатор посетителя, и вызовет функцию window.open для вызова URL-адреса

Exprator 09.11.2018 11:39

PS: Большинство современных браузеров не позволяют открывать новое окно / всплывающее окно и дают пользователю свободу выбора. Возможно, вам понадобится использовать световой короб на основе CSS, например окна модели.

art 09.11.2018 11:45
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы делаете это намного сложнее, чем нужно. Если вам нужно, чтобы ваш JS имел определенное значение, передайте его туда.

def get_context_data(self, **kwargs):
    ... existing code ...
    context['visitor_id'] = Visitor.objects.first().user_id
    return context

...

url = "54.161.109.227:5000/{{ visitor_id }}";
window.open(url)

Конечно, вы можете так же легко передать в шаблон весь объект Visitor и выполнить {{ visitor.user_id }}, решать вам.

Сэр @danielroseman, что, если я хочу передать этот visitor_id в отдельный файл javascript? Как я могу этого добиться?

Amandeep Singh 12.11.2018 09:02

Другие вопросы по теме