Skip to content

Commit 3af86fd

Browse files
Travis build 478 pushed to Github Pages
1 parent c4aee8b commit 3af86fd

38 files changed

+152
-146
lines changed

author/raphael-passini-diniz.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ <h3><a class="post-title" href="http://pythonclub.com.br/class-based-views-djang
117117
<p>Segundo a documentação do Django sobre CBV:</p>
118118
<blockquote>
119119
<p>CBV's permitem você estruturar as suas views e reutilizar código aproveitando
120-
heranças e mixinis</p>
120+
heranças e mixins</p>
121121
</blockquote>
122122
<p>O ...</p></p>
123123
<p>

author/raphael-passini-diniz.html.gz

0 Bytes
Binary file not shown.

category/django.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ <h3><a class="post-title" href="http://pythonclub.com.br/class-based-views-djang
117117
<p>Segundo a documentação do Django sobre CBV:</p>
118118
<blockquote>
119119
<p>CBV's permitem você estruturar as suas views e reutilizar código aproveitando
120-
heranças e mixinis</p>
120+
heranças e mixins</p>
121121
</blockquote>
122122
<p>O ...</p></p>
123123
<p>

category/django.html.gz

0 Bytes
Binary file not shown.

class-based-views-django.html

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<meta property="og:title" content="Class Based Views no Django" />
1919
<meta property="og:site_name" content="PythonClub" />
2020
<meta property="og:url" content="http://pythonclub.com.br/class-based-views-django.html" />
21-
<meta property="og:description" content="Esse tutorial tem como objetivo explicar o básico sobre Class Based Views no Django. Por motivos de agilidade vou usar CBV para me referir as Class Based Views. Segundo a documentação do Django sobre CBV: CBV's permitem você estruturar as suas views e reutilizar código aproveitando heranças e mixinis O ..." />
21+
<meta property="og:description" content="Esse tutorial tem como objetivo explicar o básico sobre Class Based Views no Django. Por motivos de agilidade vou usar CBV para me referir as Class Based Views. Segundo a documentação do Django sobre CBV: CBV's permitem você estruturar as suas views e reutilizar código aproveitando heranças e mixins O ..." />
2222
<meta property="og:image" content="http://res.cloudinary.com/diu8g9l0s/image/upload/v1400201393/pythonclub/logo_275x130.png" />
2323

2424
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/pure/0.3.0/pure-min.css">
@@ -110,10 +110,10 @@ <h1>Class Based Views no Django</h1>
110110
<p>Segundo a documentação do Django sobre CBV:</p>
111111
<blockquote>
112112
<p>CBV's permitem você estruturar as suas views e reutilizar código aproveitando
113-
heranças e mixinis</p>
113+
heranças e mixins</p>
114114
</blockquote>
115115
<p>O Django já vem CBV's genéricas que atendem as necessidades da maioria das aplicações.
116-
Essas views genéricas são flexiveis o sufiente para você poder adaptá-las as
116+
Essas views genéricas são flexiveis o suficiente para você poder adaptá-las as
117117
suas necessidades.</p>
118118
<p>Nesse tutorial eu vou falar brevemente sobre os 4 grupos de CBV's que existem
119119
no Django atualmente:</p>
@@ -164,15 +164,15 @@ <h2><a name="base_views"></a>Base Views</h2>
164164
views no Django. Essas classes são a base sob a qual as outras CBV's são
165165
construídas.</p>
166166
<h3><a name="view"></a>View</h3>
167-
<p>A classe génerica <em>master</em>. <strong>Todas</strong> as outras classes herdam dessa classe.
167+
<p>A classe genérica <em>master</em>. <strong>Todas</strong> as outras classes herdam dessa classe.
168168
O fluxo básico de execução dessa classe quando recebe uma requisição é:</p>
169169
<ol>
170170
<li><code>dispatch()</code></li>
171171
<li><code>http_method_not_allowed()</code></li>
172172
<li><code>options()</code></li>
173173
</ol>
174174
<p>A função <code>dispatch()</code> verifica se a classe tem um método com o nome do verbo
175-
HTTP usado na requisição. Caso não haja um <code>http.HttpResponseNotAllowed</code> é
175+
HTTP usado na requisição. Caso não haja, um <code>http.HttpResponseNotAllowed</code> é
176176
retornado.</p>
177177
<p>Essa classe sempre responde a requisições com o verbo <code>OPTIONS</code> retornando
178178
nesse caso uma lista com os verbos suportados. A não ser que o método
@@ -192,7 +192,7 @@ <h3><a name="view"></a>View</h3>
192192
<code>OPTIONS</code>, todas as outras requisições retornam
193193
<code>http.HttpResponseNotAllowed</code>.</p>
194194
<h3><a name="template_view"></a>Template View</h3>
195-
<p>Renderiza um template. O fluxo básico de execução dessa clase quando recebe
195+
<p>Renderiza um template. O fluxo básico de execução dessa classe quando recebe
196196
uma requisição é:</p>
197197
<ol>
198198
<li><code>dispatch()</code></li>
@@ -241,7 +241,7 @@ <h3><a name="redirect_view"></a>Redirect View</h3>
241241
<p>A URL a ser redirecionada pode conter parâmetros no estilo dicionário-de-strings.
242242
Os parâmetros capturados na URL do <code>RedirectView</code> serão repassados para a
243243
URL que o usuário está sendo redirecionado.</p>
244-
<p>O fluxo básico de execução dessa clase quando recebe
244+
<p>O fluxo básico de execução dessa classe quando recebe
245245
uma requisição é:</p>
246246
<ol>
247247
<li><code>dispatch()</code></li>
@@ -286,7 +286,7 @@ <h3><a name="redirect_view"></a>Redirect View</h3>
286286
<li><code>pattern_name</code>: O nome do padrão de URL. Um <code>reverse</code> será aplicado
287287
usando os mesmos
288288
<code>args</code> e <code>kwargs</code> passados para a <code>RedirectView</code></li>
289-
<li><code>permanent</code>: Se for <code>True</code> retorna o status code como 301 caso contrário
289+
<li><code>permanent</code>: Se for <code>True</code> retorna o status code como 301, caso contrário,
290290
retorna 302.</li>
291291
<li><code>query_string</code>: Se for <code>True</code> a query_string será enviada para a URL de
292292
destino.</li>
@@ -299,7 +299,7 @@ <h3><a name="detail_view"></a>DetailView</h3>
299299
parâmetro enviado na URL.</p>
300300
<p>No fluxo de execução dessa view o objeto que está sendo utilizado está em
301301
<code>self.object</code></p>
302-
<p>O fluxo básico de execução dessa clase quando recebe
302+
<p>O fluxo básico de execução dessa classe quando recebe
303303
uma requisição é:</p>
304304
<ol>
305305
<li><code>dispatch()</code></li>
@@ -320,7 +320,7 @@ <h3><a name="detail_view"></a>DetailView</h3>
320320
Django tenta o segundo e assim por diante.</p>
321321
<p>Em seguida o <code>get_slug_field()</code> entra em ação, essa função deve retornar o
322322
nome do campo que será usado para fazer a busca pelo objeto. Por default o
323-
Django procura pelo campo <code>slug</code></p>
323+
Django procura pelo campo <code>slug</code>.</p>
324324
<p>Agora o <code>get_queryset</code> deve retornar um queryset que será usado para buscar
325325
um objeto. Aqui é um ótimo lugar para, por exemplo, aplicar um filtro para
326326
exibir somente o Artigo cujo autor é o usuário logado. Considere o exemplo
@@ -396,7 +396,7 @@ <h3><a name="list_view"></a>ListView</h3>
396396
<p>Uma página que representa uma lista de objetos.
397397
Enquanto essa view está executando a variável <code>self.object_list</code> vai conter
398398
a lista de objetos que a view está utilizando.</p>
399-
<p>O fluxo básico de execução dessa clase quando recebe
399+
<p>O fluxo básico de execução dessa classe quando recebe
400400
uma requisição é:</p>
401401
<ol>
402402
<li><code>dispatch()</code></li>
@@ -458,14 +458,14 @@ <h3><a name="list_view"></a>ListView</h3>
458458
<ul>
459459
<li>O valor da variável <code>template_name</code> na View (se definido)</li>
460460
<li>O valor do campo <code>template_name_field</code> na instância do objeto que a view
461-
esta usando.</li>
461+
está usando.</li>
462462
<li><code>&lt;app_label&gt;/&lt;model_name&gt;&lt;template_name_suffix&gt;.html</code></li>
463463
</ul>
464464
<h2><a name="editing_views"></a>Editing Views</h2>
465-
<p>As views descritas abaixo contém o comportamento básico para edição de conteúdo</p>
465+
<p>As views descritas abaixo contém o comportamento básico para edição de conteúdo.</p>
466466
<h3><a name="form_view"></a>FormView</h3>
467467
<p>Uma view que mostra um formulário. Se houver erro, mostra o formulário novamente
468-
contendo os erros de validação; Em caso de sucesso redireciona o usuário para
468+
contendo os erros de validação. Em caso de sucesso redireciona o usuário para
469469
uma nova URL.</p>
470470
<p><strong>forms.py</strong></p>
471471
<div class="highlight"><pre><span class="kn">from</span> <span class="nn">django</span> <span class="kn">import</span> <span class="n">forms</span>
@@ -516,8 +516,8 @@ <h3><a name="model_view"></a>Views para lidar com <code>models</code> (ModelForm
516516
<p>Grande parte do "poder" das CBV's vem quando precisamos trabalhar com models.</p>
517517
<p>As views listadas abaixo: <code>CreateView</code>, <code>UpdateView</code> e <code>DeleteView</code> foram
518518
criadas para facilitar esse trabalho com os models, essas views podem gerar um
519-
<code>ModelForm</code> de maneira automatica, desde que seja possível determinar qual
520-
é o model que a view esta utilizando.</p>
519+
<code>ModelForm</code> de maneira automática, desde que seja possível determinar qual
520+
é o model que a view está utilizando.</p>
521521
<p>A view vai tentar determinar o model a ser usado das seguintes formas:</p>
522522
<ul>
523523
<li>Se houver um atributo <code>model</code> na classe</li>
@@ -542,7 +542,7 @@ <h3><a name="model_view"></a>Views para lidar com <code>models</code> (ModelForm
542542

543543

544544
<h3><a name="create_update_delete_view"></a>CreateView, UpdateView e DeleteView</h3>
545-
<p>Uma view que exibe um form para criar, atualizar ou apagaer um objeto.
545+
<p>Uma view que exibe um form para criar, atualizar ou apagar um objeto.
546546
Caso existam erros no formulário, este é exibido novamente junto com as
547547
mensagens de erro.</p>
548548
<p>Em caso de sucesso o objeto é salvo.</p>
@@ -593,7 +593,7 @@ <h3><a name="create_update_delete_view"></a>CreateView, UpdateView e DeleteView<
593593
<p>O atributo <code>fields</code> determina quais campos do model devem estar presentes no
594594
formulário. É obrigatório especificar o atributo <code>fields</code> ou então o atributo
595595
<code>form_class</code>, nunca os dois ao mesmo tempo, pois isso geraria uma exceção
596-
<a href="https://docs.djangoproject.com/en/1.8/ref/exceptions/#django.core.exceptions.ImproperlyConfigured"><code>ImproperlyConfigured</code></a></p>
596+
<a href="https://docs.djangoproject.com/en/1.8/ref/exceptions/#django.core.exceptions.ImproperlyConfigured"><code>ImproperlyConfigured</code></a>.</p>
597597
<p>É importante notar também que a <code>DeleteView</code> exibe as informações do objeto que
598598
será deletado quando é acessada usando o verbo <code>GET</code>, quando usado o verbo
599599
<code>POST</code> o objeto é efetivamente apagado.</p>
@@ -607,15 +607,15 @@ <h2><a name="date_views"></a>Date Views</h2>
607607
filtrados por datas, por exemplo: posts em um blog, notícias, consultas ao médico, etc.</p>
608608
<h3><a name="archive_view"></a>ArchiveIndexView</h3>
609609
<p>Uma página que exibe os "últimas" objetos inseridos, desconsiderando aqueles com uma
610-
data futura a não ser que o atributo <code>allow_future</code> seja definido como <code>True</code></p>
610+
data futura a não ser que o atributo <code>allow_future</code> seja definido como <code>True</code>.</p>
611611
<p>É importante notar que:</p>
612612
<ul>
613613
<li>O nome default do <code>context_object_name</code> é <code>latest</code>.</li>
614614
<li>O sufixo <code>_archive</code> no nome do template.</li>
615615
<li>Além da lista de objetos o contexto também contem a variável <code>date_list</code>
616616
contendo todos os anos que tem objetos em ordem decrescente.
617617
Isso pode ser alterado para mês ou dia usando o atributo
618-
<code>date_list_period</code>. Isso se aplica a todas as <em>Data-based generic views</em></li>
618+
<code>date_list_period</code>. Isso se aplica a todas as <em>Data-based generic views</em>.</li>
619619
</ul>
620620
<p>Implementação simples:</p>
621621
<p><strong>urls.py</strong></p>
@@ -902,6 +902,7 @@ <h3><a name="ref"></a>Referências</h3>
902902
<li><a href="https://docs.djangoproject.com/en/1.8/topics/class-based-views/">https://docs.djangoproject.com/en/1.8/topics/class-based-views/</a></li>
903903
<li><a href="https://docs.djangoproject.com/en/1.8/ref/class-based-views/">https://docs.djangoproject.com/en/1.8/ref/class-based-views/</a></li>
904904
<li><a href="https://github.com/django/django/blob/master/django/views/generic/">https://github.com/django/django/blob/master/django/views/generic/</a></li>
905+
<li><a href="http://ccbv.co.uk/">http://ccbv.co.uk/</a></li>
905906
</ul>
906907

907908
<div class="licence">

class-based-views-django.html.gz

11 Bytes
Binary file not shown.

django-na-pratica-aula-01.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ <h2>Configurando o ambiente</h2>
157157
<p>Abra o arquivo <tt class="docutils literal">helloworld.py</tt> e insira uma SECRET_KEY qualquer:</p>
158158
<div class="highlight"><pre><span class="n">SECRET_KEY</span><span class="o">=</span><span class="s">&#39;helloworld&#39;</span>
159159
</pre></div>
160-
<p>Para ambiente de teste não existe nenhum problema em deixar nossa SECRET_KEY com esse valor, porém para o ambiente de produção é necessário que seja um valor randômico. A SECRET_KEY é utilizada em diversas partes do Django para criar hashes e encriptar chaves. Por esse fato, você NUNCA DEVE deixar pública o valor de SECRET_KEY utizado em ambientes de produção.
160+
<p>Para ambiente de teste não existe nenhum problema em deixar nossa SECRET_KEY com esse valor, porém para o ambiente de produção é necessário que seja um valor randômico. A SECRET_KEY é utilizada em diversas partes do Django para criar hashes e encriptar chaves. Por esse fato, você NUNCA DEVE deixar pública o valor de SECRET_KEY utilizado em ambientes de produção.
161161
Mais informações <a class="reference external" href="https://docs.djangoproject.com/en/1.8/ref/settings/#secret-key">aqui</a>.</p>
162162
<p>Executando novamente nosso ambiente, teremos o seguinte erro:</p>
163163
<div class="highlight"><pre><span class="nv">$ </span>django-admin.py runserver --pythonpath<span class="o">=</span>. --settings<span class="o">=</span>helloworld
@@ -194,10 +194,10 @@ <h2>Hello World</h2>
194194
<p>Se você visualizar no terminal onde o ambiente está sendo executado, verá a seguinte mensagem:</p>
195195
<div class="highlight"><pre>AttributeError: <span class="s1">&#39;Settings&#39;</span> object has no attribute <span class="s1">&#39;ROOT_URLCONF&#39;</span>
196196
</pre></div>
197-
<p>Para encontrar as views* que serão renderizadas no projeto, o Django procura primeiro as configurações no
197+
<p>Para encontrar as <em>views</em> que serão renderizadas no projeto, o Django procura primeiro as configurações no
198198
arquivo apontado pelo <tt class="docutils literal">ROOT_URLCONF</tt>.</p>
199199
<ul class="simple">
200-
<li>uma view é uma função responsável por retornar algo para ser renderizado no browser, pode ser um html, um arquivo, um json e etc. *</li>
200+
<li>uma view é uma função responsável por retornar algo para ser renderizado no browser, pode ser um html, um arquivo, um json e etc.</li>
201201
</ul>
202202
<p>Como toda nossa aplicação ficará por enquanto no arquivo <tt class="docutils literal">helloworld.py</tt>, vamos apontar nosso <tt class="docutils literal">ROOT_URLCONF</tt> para ele.</p>
203203
<p>Abra o arquivo <tt class="docutils literal">helloworld.py</tt> e insira o seguinte código:</p>

django-na-pratica-aula-01.html.gz

-1 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)