2012-03-24 18 views
1

Ich versuche, ein url.py zu schreiben, wo ich für usersIn Django, wie schreibe ich ein url.py wo Benutzer/self/ist das gleiche wie Benutzer/<pk> /, wo <pk> ist Ihr angemeldeter Benutzer PK?

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

Das Problem mit der Weiterleitung eine einfache Sicht haben werde ich die pk des in url.py angemeldeten Benutzern nicht kennen. In view.py würde ich natürlich eine @login_required machen um auf users/self/ zugreifen zu können.

Vielleicht mache ich diesen falschen Weg? Was meinst du, was ich tue?

Antwort

2

Mein Vorschlag (nicht sicher, ob es das einfachste ist) wäre eine neue Ansicht zu erstellen, in dem Sie die Benutzer pk greifen und rufen dann die users_detail Ansicht:

@login_required 
def self_detail(request): 
    return users_detail(request, request.user.pk) 
1

Erstellen Sie eine Ansicht, die user_detail() mit dem Wert von request.user.pk aufruft.

4

Sie könnten auch Folgendes tun in 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'}  ), 
) 

Und dann in views.py:

if pk == 'self': 
    user = request.user 
else: 
    user = User.objects.get(pk=pk)