2010-07-05 2 views
0

Je suis assez nouveau à django et je veux mettre à jour une partie de mon contenu dans le django DB pour cela, j'ai écrit une petite fonction de vue. qui ressemble à ceciObtenir/incorporer ID utilisateur dans url/templates

def status_change(request,id): 
    instance = get_object_or_404(register,id=id) 
    if request.method == 'POST': 
     rform = registerForm(instance=instance, data=request.POST) 
     if rform.is_valid(): 
      instance = rform.save() 
      return render_to_response('home.html') 
    else: 
     rform = registerForm(instance=instance) 
     return render_to_response('status_change.html',{'rform':rform}) 

Je veux passer ce "id" du modèle à la "vue". mes urls lopk comme ce

 (r'^status/(?P<id>\d+)$', views.status_change), 

et quand j'utilise

 (r'^status/(?P<id>\d+)$', views.status_change, name ='status_change'), 

il aboie comme une erreur de syntaxe sur cette ligne
et dans mon modèle j'ai

<a href = "/status/{{user.id}}">Change Status</a> 

mais tout chose ne reçoit pas l'ID du modèle/url suis-je faire une erreur quelque part. toute aide sera grandement appréciée

Merci à l'avance

Répondre

1

merci pour tous i obtenu d'une manière simple, mais je ne sais pas est-il une bonne pratique ou non au lieu d'obtenir l'ID utilisateur à partir du modèle/urls i simpley mettre cette chose dans mon code et il fonctionne très bien

def status_change(request): 
    instance = get_object_or_404(register,pk=request.user.id) 
1

Vous donné rien à obtenir de user. Passez le RequestContext.

Et d'utiliser {% url %}.

L'erreur de syntaxe vient du fait que les tuples ne peuvent pas avoir d'arguments nommés. Peut-être que vous vouliez plutôt url().

+0

tout extrait ou par exemple s'il vous plaît – MajorGeek

+0

http://docs.djangoproject.com/en/dev/ref/templates/api/#id1 –

1

Si vous avez besoin de l'ID de l'utilisateur actuel, vous pouvez également utiliser le processeur de contexte de demande de django http://docs.djangoproject.com/en/dev/ref/templates/api/#django-core-context-processors-request, qui vous permet d'y accéder via {{ request.user.id }}.

+0

Je suis fermement seconde l'idée d'utiliser des processeurs de contexte pour faire « valeurs standard » disponible dans toutes vos vues/modèles. Cela réduit réellement la quantité de valeur redondante qui passe. Commander RequestContext - http://docs.djangoproject.com/fr/dev/ref/templates/api/#id1 –

Questions connexes