2013-05-29 46 views
0

使用Django,我可以在模板的內容段中成功讀取並顯示模型中的值,但我無法從我的模板的頭部段中獲取模型中的值。使用Django模板,我如何在JavaScript頭中訪問模型中的值?

下面的代碼 - >

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";和un-comment variable1={{ eventobject.datetime }};當我點擊圖片時沒有任何反應。我不能在django模板的頭部使用模型引用嗎?所有其他對內容塊中模型的引用都會正確顯示數據庫中的值。

+0

你有沒有試過:variable1 =「{{eventobject.datetime}}」; – Charl

回答

1

我猜eventobject.datetime必須是一個字符串或python datetime對象。

如果它是一個字符串,你的代碼更改爲:

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

如果它是一個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語法,需要引號。

0

Django docs,您可以使用日期過濾器,以格式日期:

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

此外,您還可以設置DATE_FORMAT(或DATETIME_FORMAT)設置來設置顯示這些值項目範圍內的默認。

相關問題