Changes between Initial Version and Version 1 of CriandoViewsExtensiveis


Ignore:
Timestamp:
Sep 22, 2008, 11:23:48 AM (16 years ago)
Author:
Marinho Brandão
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • CriandoViewsExtensiveis

    v1 v1  
     1= Criando Views Extensíveis =
     2
     3Uma view extensível é aquela que permite que seja customizada na declaração
     4da URL, ou seja, deve permitir a informação de parâmetros que determinem
     5partes relevantes de seu comportamento onde for possível.
     6
     71. Supondo que sua aplicação se chama "minha_app" que contenha as classes
     8"Produto" e "Categoria", edite o arquivo "views.py" de sua aplicação e crie
     9uma nova view, como esta abaixo::
     10
     11{{{
     12def produto(request, produto_id):
     13    produto = Produto.objects.get(id=produto_id)
     14    return render_to_response(
     15        'minha_app/produto.html',
     16        locals(),
     17        )
     18}}}
     19
     202. Agora edite o arquivo urls.py de seu projeto e acrescente a seguinte URL:
     21
     22{{{
     23url(r'produtos/(?P<produto_id>\d+)/', 'minha_app.views.produto'),
     24}}}
     25
     26isso será suficiente para exibir uma página a partir do template exibindo
     27informações do produto informado na URL.
     28
     29Entretanto, esse template pode não satisfazer no momento da declaração da URL,
     30em caso desta declaração ser feita por terceiros ou de forma customizada.
     31Portanto, é recomendável que essa view permita ser customizada, fazendo uma
     32modificação simples.
     33
     343. Acrescente o argumento "template_path" à view, que agora fica assim::
     35
     36{{{
     37def produto(request, produto_id, template_path='minha_app/produto.html'):
     38    produto = Produto.objects.get(id=produto_id)
     39    return render_to_response(
     40        template_path,
     41        locals(),
     42        )
     43}}}
     44
     454. E agora para testar, modifique a url como abaixo::
     46
     47{{{
     48url(r'produtos/(?P<produto_id>\d+)/', 'minha_app.views.produto', {'template_path': 'outra_app/detalhes_do_produto.html}),
     49}}}
     50
     515. Essa pequena modifição em sua view permite que ela seja extensível para um
     52codificador externo. Esta é uma prática recomendável para tornar suas
     53aplicações plugáveis, especialmente se você deseja distribuí-las ou utilizá-las
     54em outros projetos.
     55
     56É possível permitir extender a view com o template, classe de form, classe de
     57modelo, URL para redirecionamento e o que mais a imaginação permitir.
     58
     59----
     60Tire outras dúvidas em nosso [wiki:CookBookPortugues CookBook em Português]
Back to Top