在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)
答案 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 }}
,这取决于您。