You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: pt/css/README.md
+38-25Lines changed: 38 additions & 25 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -73,18 +73,20 @@ Mas vamos fazer pelo menos um pouco. Talvez possamos mudar a cor do nosso cabeç
73
73
74
74
Em seu arquivo `static/css/blog.css` você deve adicionar o seguinte código:
75
75
76
-
```css
76
+
```css
77
77
h1a {
78
78
color: #FCA205;
79
-
}```
79
+
}
80
+
```
80
81
81
82
82
83
`h1 a` é um seletor de CSS. Isso significa que nós estamos aplicando nossos estilos para qualquer elemento `a` dentro de um elemento `h1`(i.e. quando tivermos no código algo como: `<h1><a href="">link</a></h1>`). Neste caso nós estamos dizendo para mudar a cor para `#FCA205`, que é laranja. Claro, você pode colocar a cor que você quiser aqui!
83
84
84
85
Em um arquivo CSS podemos determinar estilos para elementos no arquivo HTML. Os elementos são identificados pelo nome do elemento (ou seja, `a`, `h1`, `body`), o atributo de `class` ou o atributo `id`. Classe e id são nomes que você mesmo dá ao elemento. Classes definem grupos de elementos, e ids apontam para elementos específicos. Por exemplo, a seguinte tag pode ser identificada por CSS usando a tag de nome `a`, a classe `link_externo` ou a identificação de `link_para_a_pagina_wiki`:
@@ -93,14 +95,16 @@ Leia sobre [Seletores CSS em w3schools][4].
93
95
94
96
Então, precisamos também contar o nosso template HTML que nós adicionamos CSS. Abra o arquivo `blog/templates/blog/post_list.html` e adicione essa linha no início do mesmo:
95
97
96
-
```html
97
-
{% load staticfiles %}```
98
+
```html
99
+
{% load staticfiles %}
100
+
```
98
101
99
102
100
103
Estamos apenas carregando arquivos estáticos aqui :). Depois, entre o `<head>``e/</head>`, depois dos links para os arquivos de CSS do Bootstrap (o navegador lê os arquivos na ordem que eles são dados, então o código em nosso arquivo pode substituir o código em arquivos de inicialização), adicione esta linha:
Essa linha irá importar uma fonte chamada *Lobster* do Google Fonts (https://www.google.com/fonts).
162
169
163
170
Agora adicione a linha `font-family: 'Lobster';` no CSS do arquivo `static/css/blog.css` dentro do bloco de declaração `h1 a` (o código entre as chaves `{` e `}`) e atualize a página:
164
171
165
-
```css
172
+
```css
166
173
h1a {
167
174
color: #FCA205;
168
175
font-family: 'Lobster';
169
-
}```
176
+
}
177
+
```
170
178
171
179
172
180
![Figura 14.3][7]
@@ -179,25 +187,27 @@ Como mencionado acima, CSS usa o conceito de classes, que basicamente permite qu
179
187
180
188
Vá em frente e o nomeie algumas partes do código HTML. Adicione uma classe chamada de `page-header` para o `div` que contém o cabeçalho, assim:
181
189
182
-
```html
190
+
```html
183
191
<divclass="page-header">
184
192
<h1><ahref="/">Django Girls Blog</a></h1>
185
-
</div>```
193
+
</div>
194
+
```
186
195
187
196
188
197
E agora, adicione uma classe `post` em sua `div` que contém um post de blog.
189
198
190
-
```html
199
+
```html
191
200
<divclass="post">
192
201
<p>published: {{ post.published_date }}</p>
193
202
<h1><ahref="">{{ post.title }}</a></h1>
194
203
<p>{{ post.text|linebreaks }}</p>
195
-
</div>```
204
+
</div>
205
+
```
196
206
197
207
198
208
Agora adicionaremos blocos de declaração de seletores diferentes. Seletores começando com `.` se referem às classes. Existem muitos tutoriais e explicações sobre CSS na Web para ajudar você a entender o código a seguir. Por enquanto, basta copiar e colá-lo em seu arquivo `mysite/static/css/blog.css`:
199
209
200
-
```css
210
+
```css
201
211
.page-header {
202
212
background-color: #ff9400;
203
213
margin-top: 0;
@@ -244,24 +254,26 @@ Agora adicionaremos blocos de declaração de seletores diferentes. Seletores co
244
254
245
255
.posth1a, .posth1a:visited {
246
256
color: #000000;
247
-
}```
257
+
}
258
+
```
248
259
249
260
250
261
Então envolva o código HTML que exibe as mensagens com declarações de classes. Substitua isto:
251
262
252
-
```html
263
+
```html
253
264
{% for post in posts %}
254
265
<divclass="post">
255
266
<p>published: {{ post.published_date }}</p>
256
267
<h1><ahref="">{{ post.title }}</a></h1>
257
268
<p>{{ post.text|linebreaks }}</p>
258
269
</div>
259
-
{% endfor %}```
270
+
{% endfor %}
271
+
```
260
272
261
273
262
274
no arquivo `blog/templates/blog/post_list.html` por isto:
263
275
264
-
```html
276
+
```html
265
277
<divclass="content container">
266
278
<divclass="row">
267
279
<divclass="col-md-8">
@@ -276,7 +288,8 @@ no arquivo `blog/templates/blog/post_list.html` por isto:
Copy file name to clipboardExpand all lines: pt/django_forms/README.md
+19-18Lines changed: 19 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -185,40 +185,40 @@ Então na nossa *view* nós temos duas situações separadas para lidar. A prime
185
185
186
186
Está na hora de preencher os pontos`[...]`. Se `method` é `POST` então nós queremos construir o `PostForm` com os dados que veem do formulário, certo? Nós iremos fazer assim:
187
187
188
-
```python
188
+
```python
189
189
form = PostForm(request.POST)
190
-
```
190
+
```
191
191
192
192
Fácil! Próxima coisa é verificar se o formulário está correto(todos os campos requeridos são definidos e valores incorretos não serão salvos). Fazemos isso com `form.is_valid()`.
193
193
194
194
Verificamos se o formulário é válido e se estiver tudo certo, podemos salvá-lo!
195
195
196
-
```python
196
+
```python
197
197
if form.is_valid():
198
198
post = form.save(commit=False)
199
199
post.author = request.user
200
200
post.save()
201
-
```
201
+
```
202
202
203
203
Basicamente, temos duas coisas aqui: Salvamos o formulário com `form.save` e adicionados um autor(desde que não haja o campo `author` em `PostForm`, e este campo é obrigatório!). `commit=False` significa que não queremos salvar o modelo `Post` ainda - queremos adicionar autor primeiro. Na maioria das vezes você irá usar `form.save()`, sem `commit=False`, mas neste caso, precisamos fazer isso. `post.save()` irá preservar as alterações(adicionando autor) e é criado um novo post no blog!
204
204
205
205
Finalmente, não seria fantástico se nós pudéssemos imediatamente ir à página de `post_detail` para o recém-criado blog post, certo? Para fazer isso nós precisaremos de mais uma importação:
206
206
207
-
```python
207
+
```python
208
208
from django.shortcuts import redirect
209
-
```
209
+
```
210
210
211
211
Adicione-o logo no início do seu arquivo. E agora podemos dizer: vá para a página `post_detail` para um recém-criado post.
`blog.views.post_detail` é o nome da view que queremos ir. Lembre-se que essa *view* exige uma variável `pk`? Para passar isso nas `views` usamos `pk=post.pk`, onde post é o recém-criado blog post.
218
218
219
219
Ok, nós falamos muito, mas provavelmente queremos ver o que toda a *view* irá parecer agora, certo?
220
220
221
-
```python
221
+
```python
222
222
defpost_new(request):
223
223
if request.method =="POST":
224
224
form = PostForm(request.POST)
@@ -230,7 +230,7 @@ Ok, nós falamos muito, mas provavelmente queremos ver o que toda a *view* irá
Vamos ver se funciona. Vá para o página http://127.0.0.1:8000/post/novo /, adicione um `title` e o `text`, salve... e voilà! O novo blog post é adicionado e nós somos redirecionados para a página de `post_detail`!
236
236
@@ -262,8 +262,9 @@ Agora sabemos como adicionar um novo formulário. Mas e se quisermos editar um j
262
262
263
263
Abra `blog/templates/blog/post_detail.html` e adicione a linha:
Isso é quase exatamente igual a nossa view de `post_new`, certo? Mas não totalmente. Primeira coisa: passamos um parâmetro extra da url `pk`. Em seguida: pegamos o modelo `Post` que queremos editar com `get_object_or_404 (Post, pk=pk)` e então, quando criamos um formulário passamos este post como uma `instância`, tanto quando salvamos o formulário:
313
314
314
-
```python
315
+
```python
315
316
form = PostForm(request.POST, instance=post)
316
-
```
317
+
```
317
318
318
319
como quando nós apenas abrimos um formulário com este post para editar:
319
320
320
-
```python
321
+
```python
321
322
form = PostForm(instance=post)
322
-
```
323
+
```
323
324
324
325
Ok, vamos testar se funciona! Vamos para a página `post_detail`. Deve haver um botão editar no canto superior direito:
Copy file name to clipboardExpand all lines: pt/django_templates/README.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,9 +14,9 @@ No capitulo anterior, nós fornecemos ao nosso template uma lista de postagens e
14
14
15
15
Para exibir uma variável no Django template, nós usamos colchetes duplos com o nome da variável dentro, exemplo:
16
16
17
-
```html
17
+
```html
18
18
{{ posts }}
19
-
```
19
+
```
20
20
21
21
Tentar fazer isso no seu template `blog/templates/blog/post_list.html` (substituia o segundo e o terceiro par de tags `< div >< / div >` pela linha `{{ posts }}`), salve o arquivo e atualize a página para ver os resultados:
22
22
@@ -31,11 +31,11 @@ Você pode ver, tudo que temos é:
31
31
32
32
Isto significa que o Django a entende como uma lista de objetos. Lembre-se de **introdução ao Python** como podemos exibir listas? Sim, com os loops! Em um template Django, fazemos isso da seguinte maneira:
33
33
34
-
```html
34
+
```html
35
35
{% for post in posts %}
36
36
{{ post }}
37
37
{% endfor %}
38
-
```
38
+
```
39
39
40
40
Tente fazer isso no seu template.
41
41
@@ -45,7 +45,7 @@ Tente fazer isso no seu template.
45
45
46
46
Funciona! Mas nós queremos que eles sejam exibidos como os posts estáticos, como os que criamos anteriormente no capítulo de **Introdução a HTML**. Nós podemos misturar HTML com tags de template. O conteúdo da tag `body` ficará assim:
47
47
48
-
```html
48
+
```html
49
49
<div>
50
50
<h1><ahref="/">Django Girls Blog</a></h1>
51
51
</div>
@@ -57,7 +57,7 @@ Funciona! Mas nós queremos que eles sejam exibidos como os posts estáticos, co
57
57
<p>{{ post.text|linebreaks }}</p>
58
58
</div>
59
59
{% endfor %}
60
-
```
60
+
```
61
61
62
62
Tudo que você põe enrte `{% for %}` e `{% endfor %}` será repetido para cada objeto na lista. Atualize sua página:
0 commit comments