0

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

这是代码-->

视图.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)})

事件.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 部分使用模型引用吗?内容块中对模型的所有其他引用都会正确显示数据库中的值。

4

2 回答 2

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 ;

这是不正确的 javascript 语法,需要引号。

于 2013-05-29T06:42:48.123 回答
0

根据Django 文档,您可以使用日期过滤器来格式化日期:

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

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

于 2013-05-29T08:38:59.487 回答