使用Django模板,如何在JavaScript标头中访问模型中的值?

时间:2013-05-29 06:33:54

标签: javascript python html django

使用Django,我可以在模板的内容片段中成功读取和显示模型中的值,但是我无法从模板的头部分中获取模型中的值。

这是代码 - >

view.py:

from django.shortcuts import render_to_response
from django.template import RequestContext
from host.models import Event

def EventSingle(request, slug):
    return render_to_response('event.html', {'eventobject': Event.objects.get(slug=slug)})

event.html:

{% extends "base.html" %}

{% block extrahead %}
    <script type="text/javascript" src="https://ajax.microsoft.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
    <script type="text/javascript">

        var variable1;
        variable1="click worked";
        //variable1={{ eventobject.datetime }};

        $(document).ready(function () {
            $("#pic").click(function (b) {
                alert(variable1);
            });
        });
    </script>   
{% endblock %}

{% block content %}
    <div id="eventobject">

        <p>{{ eventobject }}</p>
        <p>{{ eventobject.location }}</p>
        <p>{{ eventobject.datetime }}</p>

        <img id="pic" src="{{ eventobject.image1.url }}" />

    </div>

{% endblock %}

点击图片后会弹出一个警告框,其中包含“点击工作”字样,但如果我注释掉variable1="click worked";并取消评论variable1={{ eventobject.datetime }};,则点击图片时没有任何反应。我可以不在django模板的head部分使用模型引用吗?内容块中对模型的所有其他引用都会正确显示DB中的值。

2 个答案:

答案 0 :(得分:1)

我猜eventobject.datetime必须是字符串或python日期时间对象。

如果是字符串,请将代码更改为:

variable1= "{{ eventobject.datetime }}" ; 

如果是日期时间对象,请使用django模板过滤器:

variable1= "{{ eventobject.datetime|date:"D d M Y" }}"

https://docs.djangoproject.com/en/dev/ref/templates/builtins/#date

如果您不加引号,则javascript语句如下所示:

variable1 = 2013-05-30 ;

这是INCORRECT javascript语法,需要引号。

答案 1 :(得分:0)

Django docs,您可以使用日期过滤器格式化日期:

variable1= '{{ eventobject.datetime|date:"d-m-Y" }}';

此外,您还可以设置DATE_FORMAT(或DATETIME_FORMAT)设置以设置项目范围的默认值以显示此类值。