在Javascript函数中使用Django对象的属性值

时间:2018-11-09 10:35:16

标签: javascript ajax django

在models.py中有一个名为VisitorInfo的模型,如下所示:

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 = 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的函数。如何在javascript程序中传递python变量的值?

暂时,我正在获取访问者中第一个访问者的visitor_id,并且我编写了以下函数来做到这一点。

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

1 个答案:

答案 0 :(得分:0)

您正在做的事情比需要做的要困难得多。如果您需要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 }},这取决于您。