Por exemplo, posso apontar o url '^/accounts/password/reset/$'
para django.contrib.auth.views.password_reset
com meu nome de arquivo do modelo no contexto, mas acho que preciso enviar mais detalhes do contexto.
Preciso saber exatamente qual contexto adicionar para cada redefinição de senha e alterar visualizações.
context
é a coisa certa que você está procurando!Respostas:
Se você der uma olhada nas fontes de django.contrib.auth.views.password_reset você verá que ele usa
RequestContext
. O resultado é que você pode usar Processadores de Contexto para modificar o contexto, o que pode permitir que você injete as informações de que precisa.A lista b tem uma boa introdução aos processadores de contexto .
Editar (parece que fiquei confuso sobre qual era a questão real):
Você notará que
password_reset
leva um parâmetro nomeado chamadotemplate_name
:Verifique password_reset para mais informações.
... assim, com um urls.py como:
django.contrib.auth.views.password_reset
será chamado para URLs correspondentes'/accounts/password/reset'
ao argumento de palavra-chavetemplate_name = 'my_templates/password_reset.html'
.Caso contrário, você não precisa fornecer nenhum contexto, pois a
password_reset
visualização se auto-administra. Se quiser ver o contexto disponível, você pode acionar umTemplateSyntax
erro e examinar o rastreamento da pilha, localizar o quadro com uma variável local chamadacontext
. Se você deseja modificar o contexto, então o que eu disse acima sobre processadores de contexto é provavelmente o caminho a percorrer.Em resumo: o que você precisa fazer para usar seu próprio modelo? Fornece um
template_name
argumento de palavra - chave para a exibição quando ela é chamada. Você pode fornecer argumentos de palavra-chave para visualizações incluindo um dicionário como o terceiro membro de uma tupla de padrão de URL.fonte
registration/password_reset_email.html
realmente conter elementos HTML, como:<div>
,<a>
porque este envia apenas textoRecomendo vivamente este artigo.
Eu apenas conectei e funcionou
http://garmoncheg.blogspot.com.au/2012/07/django-resetting-passwords-with.html
fonte
Você só precisa agrupar as funções existentes e passar o modelo desejado. Por exemplo:
Para ver isso, basta dar uma olhada na declaração de função das visualizações integradas:
http://code.djangoproject.com/browser/django/trunk/django/contrib/auth/views.py#L74
fonte
Você pode fazer o seguinte:
Explicação:
Quando os modelos são carregados, eles são pesquisados na variável INSTALLED_APPS em settings.py. A ordem é ditada pela classificação da definição no INSTALLED_APPS, portanto, como seu aplicativo vem antes de 'django.contrib.auth', seu modelo foi carregado (referência: https://docs.djangoproject.com/en/dev/ref/templates/api /#django.template.loaders.app_directories.Loader ).
Motivação de abordagem:
fonte
Outra solução, talvez mais simples, é adicionar seu diretório de modelos de substituição à entrada DIRS da configuração TEMPLATES em settings.py. (Eu acho que essa configuração é nova no Django 1.8. Ela pode ter se chamado TEMPLATE_DIRS nas versões anteriores do Django.)
Igual a:
Em seguida, coloque seus arquivos de modelo de substituição em
my_app/templates
. Portanto, o modelo de redefinição de senha substituído seriamy_app/templates/registration/password_reset_form.html
fonte
A documentação diz que existe apenas uma variável de contexto
form
,.Se você está tendo problemas com o login (o que é comum), a documentação diz que existem três variáveis de contexto:
form
: Um objeto Form que representa o formulário de login. Consulte a documentação dos formulários para obter mais informações sobre os objetos Form.next
: O URL para o qual redirecionar após o login bem-sucedido. Ele também pode conter uma string de consulta.site_name
: O nome do site atual, de acordo com a configuração SITE_ID.fonte
password_reset
visão.Eu estava usando essas duas linhas no url e o modelo do admin que eu estava mudando para minha necessidade
fonte