2017-03-26 2 views
0

Ich möchte, dass Benutzer auf andere Benutzer klicken, um ihr Profil zu besuchen, ohne ihre Beiträge zu bearbeiten.Anderes Benutzerprofil anzeigen

Hier ist mein Profil Ansicht:

def Profil(request, username): 
    if not request.user.is_authenticated(): 
     return render(request, 'blog/visitor.html') 
    else: 
     u = User.objects.get(username=username) 
     user = request.user 
     posts = Post.objects.filter(user=request.user) 
     context = {'user': user, 'user_url':u,'posts': posts} 
     return render(request, 'blog/profil.html', context) 

Und hier meine Index Ansicht

def IndexView(request): 
    if request.user.is_authenticated(): 
     base_template_name = 'blog/base.html' 
    else: 
     base_template_name = 'blog/visitor.html' 

    posts = Post.objects.all() 

    return render(request, 'blog/index.html', 
        {'posts':posts, 'base_template_name':base_template_name}) 

(Gibt es eine andere Lösung außer das?)

Mein urls.py

url(r'^(?P<username>\w+)/$', views.Profil, name = 'profil'), 

und ein li nk von index.html zu profil.html sieht wie folgt aus:

<a href="{% url 'blog:profil' user.username %}">{{post.user.username }}</a> 

das Problem dabei ist, wenn ich auf den Link klicken, um es mit den aktuellen Benutzer übergibt ich Sie sich mit und nicht den Benutzer, dass ich auf auf es mit Admin

LogIn und wollen Ala Profil sehen:

Link from 'Ala' to his profil

Als ich es zeigt in der uRL klicken diese:

http://127.0.0.1:8000/blog/imedadmin/, die "Ala" anstelle von "imedadmin" sein soll.

+0

Sie verwenden den Benutzernamen des angemeldeten Benutzers im Profillink hier: '{% url 'blog: profil' user.username%}'. Ersetzen Sie "user" durch den tatsächlichen Benutzer, dessen Profil Sie verknüpfen möchten. – xyres

+0

Womit sollte ich es ersetzen? – Imed

+0

Zeigen Sie den Namen des Benutzers in dem Link? Können Sie den vollen '...' Code zeigen? Oder zeigen Sie Ihre Indexansicht an. – xyres

Antwort

0

Meiner Meinung nach können Sie eine Variable senden, um in Ihrer Renderfunktion anzuzeigen, nennen Sie es isHim. Wenn der angemeldete Benutzer selbst er ist, setze ihn gleich true und wenn nicht, setze ihn auf false. In Ihrer Ansicht überprüfen Sie es mit {{if isHim}} und aktivieren/deaktivieren Sie dann die Bearbeitungsschaltflächen. Ich habe es benutzt und es hat geantwortet.

{% if request.user.id == post.user.id %} 
# ur code {% endif %} 

in den Vorlagen dir:

+0

Kannst du in meinem Code zeigen, wie es geht, bitte ich brauche es so schnell wie möglich – Imed

0

Man könnte so etwas wie zu tun.