Como fazer a localização no Django com base no UserProfile

Eu quero fazer a localização no Django com base no código do país/localidade definido nos usuários UserProfile em vez de usar o que o navegador/sessão/servidor da web acha que é a localidade.

Existe uma maneira de fazer isso em modelos de django?

por exemplo, como alterar o comportamento de

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

de modo que formata a data com base no que está armazenado no perfil, não baseado em algum contexto de solicitação?

0
adicionado editado
Visualizações: 1

1 Respostas

O Django fornece LocaleMiddleware que faz mais do que você está depois:

Ativa a seleção de idioma com base nos dados da solicitação. isto   personaliza o conteúdo para cada usuário. Veja a internacionalização   documentação.

O método usado para adivinhar o idioma é o mesmo usado pelo mecanismo de tradução; ou seja, ele procura por uma variável django_language na sessão, se ela existir e for um idioma válido, ela definirá esse idioma para a solicitação. Veja como o django descobre a preferência de idioma .

Uma vez que você habilite o LocaleMiddleware e defina django_language do perfil do usuário na sua visualização de login, tudo deve funcionar.

2
adicionado
Como executo o código após o login se eu usar contrib.auth.views.login ?
adicionado o autor Kimvais, fonte
Não é realmente relacionado a esta questão, mas você deve ouvir os user_logged_in sinal (apenas no django 1.3+)
adicionado o autor Burhan Khalid, fonte