2016-04-20 5 views
1

Ich bin neu in Angular und versuche herauszufinden, wie der beste Weg dazu ist. In meiner Django-Ansicht authentifiziere ich einen Benutzer, der diesen Benutzer in request.user speichert. Gibt es eine Möglichkeit, diesen request.user in einem Angular-Modul abzurufen. Kann ich es über den http-Dienst von Angular abrufen? Ich habe mich umgeschaut, aber ich konnte noch keine Lösung finden ... und dachte, ich würde versuchen, Stack Overflow gut zu machen.Django request.user im eckigen Modul erhalten

+0

ist Ihr Winkel auf Ihrem Django-Server laufen (mit eckigen in den Django-Vorlagen) oder ist es getrennt? – awwester

+0

Wenn Sie angular innerhalb von Django verwenden, verwenden Sie ein bestimmtes Paket? – awwester

+0

Ja, mein Angular läuft auf meinem Django-Server, und ich bin mir nicht ganz sicher, ob ich ein bestimmtes Paket verwende, Beispiele? – JBT

Antwort

1

Winkel läuft im Browser, Django läuft auf dem Server. Verwenden Sie eine JSON-Zeichenfolge, um die Daten von Djangos request.user an den Browser zu senden, wo Angular diese JSON-Zeichenfolge in ein JavaScript-Objekt auspacken kann.

So, Sie sind richtig, $http.get('/path/my-user.json') könnte die request.user Daten lesen.

$http.get('/path/my-user.json').then(function (response) { 
    $scope.user = response.data.user; 
}, function (reject) { 
    // error 
}); 

In Ihrer Django-Ansicht würden Sie die Daten als JSON-codierte Zeichenfolge senden.

def my_view(request): 
    data = {'username': request.user.username, 
      'is_staff': request.user.is_staff} 
    return JsonResponse(data) 

Aber das ist Django und eckig, so gibt es viele Dinge viel davon zu automatisieren, wenn Sie die Grundlagen verstehen. Nämlich Django Restframework und die Angular Resource Service.

+0

Ahhhh Ich sehe, ich war neugierig, warum er 'Fenster' verwendet, um die Konto-ID in einem Teil seines Codes zu bekommen. Ich gebe zu, ich bin zu eckig sehr neu, aber es beginnt mehr und mehr Sinn zu machen. – JBT

Verwandte Themen