Wie funktioniert die Lokalisierung in Django basierend auf UserProfile?

Ich möchte die Lokalisierung in Django basierend auf dem Ländercode/Gebietsschema, das im Benutzer UserProfile festgelegt wurde, durchführen, anstatt alles zu verwenden, was der Browser/die Sitzung/der Webserver für das Gebietsschema hält.

Gibt es eine Möglichkeit, dies in Django-Vorlagen zu tun?

z. B. wie man das Verhalten von ändert

{% load l10n %}
{{ value|time|localize }}

so dass das Datum basierend auf dem, was im Profil gespeichert ist, formatiert wird und nicht auf einem Anfragekontext basiert?

0
hinzugefügt bearbeitet
Ansichten: 1

1 Antworten

Django bietet LocaleMiddleware , das meiste davon Sie sind auf der Suche nach:

Aktiviert die Sprachauswahl basierend auf Daten aus der Anfrage. Es   Passt den Inhalt für jeden Benutzer an. Siehe die Internationalisierung   Dokumentation.

Die Methode, die verwendet wird, um die Sprache zu erraten, ist die gleiche, die von der Übersetzungsmaschinerie verwendet wird; das heißt, es sucht nach einer django_language -Variable in der Sitzung, wenn diese existiert und eine gültige Sprache ist, wird sie diese Sprache für die Anfrage einstellen. Siehe wie Django die Sprachpräferenz entdeckt .

Sobald Sie LocaleMiddleware aktiviert haben und django_language in der Login-Ansicht des Benutzerprofils eingestellt haben, sollte alles funktionieren.

2
hinzugefügt
Wie führe ich Code nach der Anmeldung aus, wenn ich contrib.auth.views.login verwende?
hinzugefügt der Autor Kimvais, Quelle
Nicht wirklich mit dieser Frage verbunden, aber Sie sollten auf die user_logged_in signal (nur bei django 1.3+)
hinzugefügt der Autor Burhan Khalid, Quelle