Django jQuery просматривает вопрос пользователя - PullRequest
0 голосов
/ 13 августа 2010

Кажется, я застрял и не уверен, какое направление лучше выбрать.

У меня есть несколько приложений в моем проекте, и я хотел бы объединить три представления в один шаблон.

У меня есть пользовательский профиль, в котором я хотел бы показать его информацию, последние новостные ленты , а также фотографии

Благодаря этому я использую jQuery tabs

Я определил свои три вкладки, из которых одна вызывает обычный div, а две другие - это URL, которые вызываются.

<a href="wall/recent">wall</a> и <a href="photos/recent">photos</a>

в адресной строке показывается следующее в профиле пользователя http://localhost:8000/profiles/profile_name/

по моему views.py для wall и photos выглядит следующим образом

@login_required
def index(request, template_name='wall/_index.html'):
    photos = Photos.objects.filter(user=request.user).order_by('-id')
    context = { 'photos': photos, }

    return render_to_response(template_name, context,
        context_instance=RequestContext(request))

Но если я тогда посмотрю на МОЙ профиль, то все в порядке, но всякий раз, когда я переключаюсь на профиль другого пользователя, он, похоже, отображает часть моей информации.

Я знаю, что request.user просматривает зарегистрированного пользователя, как мне получить этого пользователя в адресной строке и передать его, чтобы он отображал правильную информацию, например, если profile_name = john, то отображает фотографии johns настенные элементы и т. д.

1 Ответ

2 голосов
/ 13 августа 2010

Если у вас есть urls.py, как это:

urlpatterns = patterns('',
                      (r'^profiles/(?P<prof_name>[A-Za-z0-9\-_]+)/$', 'appname.views.index'))

Тогда ваш код просмотра может быть изменен следующим образом:

@login_required
def index(request, prof_name, template_name='wall/_index.html'):
    photos = Photos.objects.filter(user__username=prof_name).order_by('-id')
    context = { 'photos': photos, }

    return render_to_response(template_name, context,
        context_instance=RequestContext(request))

Для этого нужно связать имя prof_name с любым значением в бите URL-адреса после profiles/ и перед последним /. Учитывая URL /profiles/john/, вы получите вызов index, с prof_name, установленным в john.

...