use*_*611 2 javascript python django django-models python-3.x
我正在尝试将查询集数据作为 javascript 变量传递到模板。我知道我正在做一些愚蠢且行不通的事情。
views.py 
from django.http import HttpResponse
from django.template import Context,Template,RequestContext
from django.shortcuts import render_to_response, render
from django.conf.urls.static import static
from django.contrib import admin
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.template.context_processors import csrf
from io import TextIOWrapper
from django.core.mail import send_mail
from django.utils.safestring import mark_safe
from django.db import connection
import os
import json
import xlrd
from django import forms
from django.forms import ModelForm
from django.db import models
from .models import Deliveries
# Create your views here.
def historicals(request):
    context = {}          
    historicals= Deliveries.objects.all()[1:100]
    print (historicals)
    context['historicals']=historicals
    context['abc']=123
    return render(request,'customer.html',context)
那么
customer.html
{% extends "base.html" %}
{% load static %}
    <script type="text/javascript">
    //{% autoescape off %}{{ historicals }}{% endautoescape %}; <--tried this too
           var actuals = {{ historicals | safe }};
           var abc = {{ abc | safe }}   ;
        </script>
        <script src="{% static 'js/custom.js' %}"></script>
    {% block content %}         
            {% for i in actuals %}
                {{ i.Date }}
            {% endfor %}            
            <h1> {{ abc }} </h1> 
    {% endblock content %}
这就是混乱。
我做错了什么,历史查询集甚至没有显示在模板中(我检查了查看源代码,它是空白的),但简单的变量显示了?
您可以使用 Django 内置函数serilizers将数据传递给 js 以进行查询集。
# views.py
from django.core import serializers
historicals = serializers.serialize("json", Deliveries.objects.all())
# html
<script type="text/javascript">
   // construct js objects
   var actuals = JSON.parse('{{ historicals | safe }}')
</script>
如果你想在 django 模板中循环,你只需要传递delivers查询集,不需要解析为 js 变量。
# views.py
diliveries = Deliveries.objects.all()
# html
{% for i in deliveries %}
  {{ i.Date }}
{% endfor %} 
| 归档时间: | 
 | 
| 查看次数: | 5460 次 | 
| 最近记录: |