Eu queria saber como obter o URL atual dentro de um modelo.
Digamos que meu URL atual seja:
.../user/profile/
Como faço para retornar isso ao modelo?
django
django-templates
dotty
fonte
fonte
request
um modelo. No Django 1.10, basta acessar{{request.path}}
o template e ele funciona. Por padrão,django.core.context_processors.request
já está configurado em settings.py se você usou.startproject
Respostas:
Django 1.9 e acima:
Velho:
fonte
render_to_response
e não érender_to_request
. E você não pode definirTEMPLATE_CONTEXT_PROCESSORS
como define o arquivo settings.py, sem mencionar os outros processadores padrão que podem ser usados nos modelos!request.path
não inclui parâmetros de consulta como?foo=bar
. Use emrequest.get_full_path
vez disso.Você pode buscar o URL no seu modelo assim:
ou pela
{{ request.path }}
se você não precisar dos parâmetros extras.Algumas precisões e correções devem ser levadas às respostas de hypete e Igancio , apenas resumirei a idéia aqui, para referência futura.
Se você precisa da
request
variável no modelo, você deve adicionar o 'django.core.context_processors.request' para asTEMPLATE_CONTEXT_PROCESSORS
configurações, não é por padrão (Django 1.4).Você também não deve esquecer os outros processadores de contexto usados por seus aplicativos. Portanto, para adicionar a solicitação aos outros processadores padrão, você pode adicioná-lo nas suas configurações, para evitar codificar a lista de processadores padrão (que pode muito bem mudar nas versões posteriores):
Em seguida, desde que você envie o
request
conteúdo em sua resposta , por exemplo, como este:fonte
request
ao contexto.Note that a settings file should not import from global_settings, because that’s redundant
return render(request, 'user/profile.html', {'title': 'User profile'})
é mais curto{{request.get_full_path|urlenode}}
se você estiver redirecionandoO código abaixo me ajuda a:
fonte
No modelo django
Basta obter o URL atual de
{{request.path}}
Para obter o URL completo com os parâmetros
{{request.get_full_path}}
Nota : Você deve adicionar
request
no djangoTEMPLATE_CONTEXT_PROCESSORS
fonte
Suponho que enviar para a solicitação completa do modelo seja um pouco redundante. Eu faço assim
fonte
As outras respostas estavam incorretas, pelo menos no meu caso.
request.path
não fornece o URL completo, apenas o URL relativo, por exemplo/paper/53
. Como não encontrei nenhuma solução adequada, acabei codificando a parte constante do URL no modo de exibição antes de concatená-lorequest.path
.fonte
Ambos
{{ request.path }} and {{ request.get_full_path }}
retornam o URL atual, mas não o URL absoluto, por exemplo:Então você terá que fazer algo como
No entanto, você pode obter o URL absoluto usando (graças à resposta acima)
NOTA: você não precisa incluir
request
nosettings.py
, ele já está lá.fonte
Esta é uma pergunta antiga, mas pode ser resumida com a mesma facilidade se você estiver usando o django-registration.
No link Login e Logout (digamos no cabeçalho da página), adicione o próximo parâmetro ao link que irá para o login ou logout. Seu link deve ficar assim.
Simplesmente, nada mais precisa ser feito; ao sair, eles serão imediatamente redirecionados para a página em que estão, para fazer login, eles preencherão o formulário e, em seguida, serão redirecionados para a página em que estavam. Mesmo que eles tentem entrar incorretamente, ainda funciona.
fonte
{{ request.path|urlencode }}
As respostas acima estão corretas e fornecem uma resposta ótima e curta.
Eu também estava olhando para obter o URL da página atual no modelo de Django como minha intenção foi ativar
HOME page
,MEMBERS page
,CONTACT page
,ALL POSTS page
quando eles são solicitados.Estou colando a parte do snippet de código HTML que você pode ver abaixo para entender o uso de
request.path
. Você pode vê-lo na minhalive website
na http://pmtboyshostelraipur.pythonanywhere.com/fonte
active
classe a cadali
elemento, por que não fazer isso em linha dentro de umli
elemento: em<li class="{% if "/contact/" == request.path %}active {% endif %}text-center">....</li>
vez de um bloco if / else gigante para o todoli
? Isso iria salvar um monte de código redundante :)No Django 3, você deseja usar a tag de modelo de URL :
Para um exemplo, consulte a documentação
fonte