В Django, как мне написать url.py, где users / self / совпадает с users / <pk>/, где <pk>- ваш вошедший в систему пользователь pk? - PullRequest
1 голос
/ 24 марта 2012

Я пытаюсь написать url.py, где у меня есть простое представление для users

urlpatterns = patterns( 'doors.view',
    url( r'^users/$'            , 'users_list'  , name = 'users_list'   ),
    url( r'^users/(?P<pk>\d+)/$', 'users_detail', name = 'users_detail' ),
    url( r'^users/self/$'       , # do some sort of redirect here       ),
)

Проблема с перенаправлением заключается в том, что я не знаю pk вошедшего в системупользователь в url.pyview.py я бы, очевидно, сделал @login_required, чтобы получить доступ к users/self/.

Может быть, я поступаю неправильно?Что вы, ребята, предлагаете мне сделать?

Ответы [ 3 ]

4 голосов
/ 24 марта 2012

Вы также можете сделать следующее в urls.py:

urlpatterns = patterns( 'doors.view',
    url( r'^users/$'            , 'users_list'  , name = 'users_list'   ),
    url( r'^users/(?P<pk>\d+)/$', 'users_detail', name = 'users_detail' ),
    url( r'^users/self/$'       , 'users_detail', {'pk'='self'}       ),
)

А затем в views.py:

if pk == 'self':
    user = request.user
else:
    user = User.objects.get(pk=pk)
2 голосов
/ 24 марта 2012

Мое предложение (не уверен, что это самый простой вариант) - создать новое представление, где вы можете получить пользовательский pk, а затем вызвать представление users_detail:

@login_required
def self_detail(request):
    return users_detail(request, request.user.pk)
1 голос
/ 24 марта 2012

Создать представление, которое вызывает user_detail() со значением из request.user.pk.

...