django получает идентификатор текущего пользователя - PullRequest
3 голосов
/ 03 июня 2010

У меня есть мини-приложение, в котором пользователи могут входить в систему, просматривать свой профиль и следовать друг за другом. «Follow» - это отношение, похожее на обычные отношения «друг» в виртуальных сообществах, но оно не обязательно является взаимным, что означает, что можно следовать за пользователем без необходимости, чтобы пользователь следовал за тем человеком, который следует за ним. моя проблема заключается в: если я вошел в систему, и я перехожу к профилю X и нажимаю кнопку «следуй», как я могу получить идентификатор текущего профиля? (текущий профиль означает профиль, который я, зарегистрированный пользователь, просматриваю прямо сейчас. )

вид:

   def follow(request):
      if request.method == 'POST':
    form = FollowForm(request.POST)
    if form.is_valid():
    new_obj = form.save(commit=False)
    new_obj.initiated_by = request.user
    u = User.objects. what here?
    new_obj.follow = u   
    new_obj.save()
    return HttpResponseRedirect('.')    
   else:
       form = FollowForm()     
   return render_to_response('followme/follow.html', {
       'form': form,
       }, 
      context_instance=RequestContext(request))  

спасибо заранее!

Ответы [ 2 ]

15 голосов
/ 03 июня 2010

Попробуйте request.user.id. Но есть лучшая хорошая практика. дай мне посмотреть.

http://docs.djangoproject.com/en/1.2/topics/db/optimization/ - хорошее начало, полное хорошей практики. В вашем случае используйте request.user.id.

0 голосов
/ 03 июня 2010

Если вы добавите профиль пользователя в форму, вы можете передать его вместе со своим сообщением.

Есть несколько способов сделать это. Вы можете добавить скрытое поле к вашей FollowForm (передать в качестве примера в качестве профиля).

Вы можете сделать это больше вручную, вставив скрытое поле, например:

<input type="hidden" name="profile_id" value="{{ profile.id }}" />

Тогда вы можете изменить свой код выше на:

u = User.objects.get(request.POST['profile_id'])

Или, возможно, у вас уже есть идентификатор пользователя профиля в вашем представлении?

...