2010-06-03 5 views
3

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

вид:.

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)) 

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

ответ

0

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

Существует несколько способов сделать это. Вы можете добавить скрытое поле в свой FollowForm (передать в профиль как экземпляр).

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

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

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

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

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

+0

кажется правильным, но я получаю сообщение об ошибке: нужно больше чем 1 значение для распаковки и я не понимаю, почему у меня есть более одного значения в декларации u. спасибо! – dana

+2

Любой может изменить значение скрытого поля ... –

15

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

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

+0

yep. идея состоит в том, чтобы не принимать идентификатор текущего пользователя (в моем примере выше, я вошел в систему), но идентификатор пользователя, профиль которого я посещаю, и я хочу следовать. Большое спасибо за интерес! – dana

+1

ok, представьте, что URL-адрес профиля - это что-то вроде/user/ /, затем действие, чтобы следить за определенными людьми, можно возобновить до POST на URL-адресе, например/user//follow/where id is user.id людей, за которыми вы хотите следовать. – dzen

+0

есть. это кажется логичным и правильным :) Я попробую сейчас и опубликую результаты. благодаря ! :) – dana

Смежные вопросы