2010-09-28 54 views
2

我正在開發一個項目,需要我使用view.py模板中的變量中包含的值。我需要在我的JavaScript中使用該變量。有誰知道一個正確的方式來從Django傳遞一個變量到JS?如何在javascript中引用django變量?

這是我在views.py

@login_required 
@never_cache_headers 
def user_feed(request, user=None, extension=None): 
# Ensure we have a user 
if user is None: 
    user = request.user 
    prof = user.get_profile() 
elif isinstance(user, basestring): 
    user = get_object_or_404(User, id=user) 

# Build author list 
author_ids = [] 
author_ids.append(user.id) 

# Check if user if friend to profile being viewed 
are_friends = Friendship.objects.are_friends(user, request.user) 

# Determine Date 
now = datetime.datetime.now() 
today = now.date() 
if now.time() < datetime.time(3): 
    start_dt = datetime.datetime.now() - datetime.timedelta(hours=settings.FEEDITEM_BUFFER_HOURS) 
else: 
    start_dt = datetime.datetime(today.year, today.month, today.day) 

# Build up the where query 
where = [] 
if user.id != request.user.id: 
    where.append({'ping_type':'public'}) 
    if are_friends: 
     where.append({'ping_type': 'friends_only'}) 
     where.append({'ping_type': 'invite_only', 'invite_list': request.user.id}) 
    where = {'$or': where} 
else: where = {} # Vanity check - show all pings by author 

where['author'] = { '$in' : author_ids } 
where['starts'] = { "$gt":start_dt } 
where['deleted'] = { "$ne": True } 
# print "User View Where = ", where 

feeditems, has_more = ds.Feed.feeditems(request, where) 

feeditems = ds.FeedItem.prepare(feeditems) 
friend_requested = FriendshipInvitation.objects.is_friend_requested(request.user, user) 

if extension: 
    if extension == 'json': 
    return http.HttpResponse(json.dumps(feeditems, indent=2, default=json_handler), 
         mimetype='application/json') 
else: 
    return render_to_response("social/feeditems_list.html", { 
    'feeditems':feeditems, 
    'user':user, 
    'has_more':has_more, 
    'section':'user_feed', 
    'are_friends':are_friends, 
    'friend_requested':friend_requested, 
}, request) 

功能基本上,我需要通過request.user.id或user.id爲JavaScript。

編輯

其實,我寧願把它傳遞給JavaScript作爲自己的小一個元素JSON數組,如果多數民衆贊成可能

回答

5

也許有一點顯而易見,但如何:

<script type="text/javascript"> 
    var userId = {{ user.id|default:null }}; 
</script> 
+0

或者,如果您使用的是jQuery,請查看.data()方法將數據存儲在DOM中,而不是將其聲明爲全局變量。但是,即使你使用全球化,天空也不會倒下。我會設置默認值:'null',以便更容易在JS – 2010-09-28 22:21:10

+0

中處理我得到一個解析錯誤,該解決方案:無效的屬性ID [打破這個錯誤] var userId = {{request.user.id |默認:0}}; \ n – Sachin 2010-09-28 22:27:07

+0

有什麼我需要做的Django端,以確保它可以在JS中引用? – Sachin 2010-09-28 23:08:16