使用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中的值。
答案 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)设置以设置项目范围的默认值以显示此类值。