Chamar funçaõ no Template Django

99 views
Skip to first unread message

Charles tenorio

unread,
May 20, 2019, 10:30:11 AM5/20/19
to pug-pe
Bom dia pessoal!

eu tenho um função na minha view.py e gostaria de chamar ela no template

def resumo(codigo, data_inicial, data_final, op):
valor= 0
if op =='Tempo':
qtd = RegraTempo.objects.select_related('id_banner').filter(id=codigo, data_cadastro__gte=data_inicial,
data_cadastro__lte=data_final).aggregate(Sum('tempo_exposicao'))
if qtd['tempo_exposicao__sum'] != None:
valor = convert_tempo_hora(qtd['tempo_exposicao__sum'])

else:
valor = 0

elif op == 'Cliques':
total_click = RegraClick.objects.select_related('id_banner').filter(id_banner=codigo,data_cadastro__gte=data_inicial,
data_cadastro__lte=data_final).count()
if total_click >= 1:
valor= int(total_click)

elif op == 'Visita':
quantas_visitas = RegraVista.objects.select_related('id_banner').filter(id_banner=codigo, data_cadastro__gte=data_inicial,
data_cadastro__lte=data_final).count()
if quantas_visitas >= 1:
valor = int(quantas_visitas)
else:
valor = 0

return valor


def convert_tempo_hora(periodo):
horas = 0
if periodo > 0:
horas = periodo/60

return horas

o usuário vai passar os valores

Guilherme Medeiros

unread,
May 20, 2019, 4:28:55 PM5/20/19
to Comunidade_Python
O ideal é que o template seja apenas exibição de conteúdo. Métodos nele façam apenas formatação de textos e/ou seleção de blocos de template para serem apresentados.

No seu caso acredito que seja mais viável utilizar esse seu método no momento q vc está preparando os dados para enviar para o template.

Outro problema que vc iria enfrentar, nesse caso, é que, ao criar métodos para serem utilizados nos templates, esses métodos não aceitam parâmetros de entrada.

Because Django intentionally limits the amount of logic processing available in the template language, it is not possible to pass arguments to method calls accessed from within templates. Data should be calculated in views, then passed to templates for display. - https://docs.djangoproject.com/en/1.11/ref/templates/language/#accessing-method-calls


--
Você recebeu essa mensagem porque está inscrito no grupo "pug-pe" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para pug-pe+un...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para pug...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/pug-pe/cc037a7a-6ccf-4da5-b3a5-d7d431c426d7%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Charles tenorio

unread,
May 24, 2019, 2:43:25 PM5/24/19
to pug-pe

valeu pessoal vou ver como faço obrigado
Reply all
Reply to author
Forward
0 new messages