2010-09-28 4 views
2

Je travaille sur un projet qui nécessite que j'utilise une valeur contenue dans une variable de mon template view.py. J'ai besoin d'utiliser cette variable dans mon javascript. Est-ce que quelqu'un sait comment passer une variable de django à JS?Comment référencer une variable django en javascript?

Voici ma fonction dans 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) 

J'ai besoin essentiellement de passer request.user.id ou user.id à Javascript.

EDIT

En fait, je préférerais passer à javascript comme son propre petit élément tableau JSON, si c'est possible

Répondre

5

Peut-être un peu évident, mais que diriez-vous:

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

Ou , si vous utilisez jQuery, regardez la méthode .data() pour stocker les données dans le DOM, plutôt que de le déclarer comme une variable globale. Mais, vraiment, le ciel ne tombera pas même si vous utilisez un global. Je définirais par défaut: 'null' cependant, pour le rendre plus facile à manipuler dans JS –

+0

Je reçois une erreur d'analyse avec cette solution: ID de propriété non valide [Rompre sur cette erreur] var userId = {{request.user.id | par défaut: 0}}; \ n – Sachin

+0

Y at-il quelque chose que je dois faire du côté django pour m'assurer qu'il est disponible pour être référencé dans JS? – Sachin

Questions connexes