Skip to content

Commit 47911bd

Browse files
committed
Russian translation: django views-url-forms, html and css chapters updated
1 parent 7c7a5dc commit 47911bd

File tree

13 files changed

+768
-619
lines changed

13 files changed

+768
-619
lines changed

en/dynamic_data_in_templates/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,4 +73,4 @@ def post_list(request):
7373

7474
That's it! Time to go back to our template and display this QuerySet!
7575

76-
Want to read a little bit more about QuerySets in Django? You should look here: https://docs.djangoproject.com/en/1.9/ref/models/querysets/
76+
Want to read a little bit more about QuerySets in Django? You should look here: https://docs.djangoproject.com/en/1.11/ref/models/querysets/

en/whats_next/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@ Later on, you can try the resources listed below. They're all very recommended!
2020
- [Django Carrots tutorial](https://github.com/ggcarrots/django-carrots)
2121
- [Learn Python The Hard Way book](http://learnpythonthehardway.org/book/)
2222
- [Getting Started With Django video lessons](http://www.gettingstartedwithdjango.com/)
23-
- [Two Scoops of Django: Best Practices for Django 1.8 book](https://twoscoopspress.com/products/two-scoops-of-django-1-8)
23+
- [Two Scoops of Django 1.11: Best Practices for Django Web Framework book](https://www.twoscoopspress.com/products/two-scoops-of-django-1-11)
2424
- [Hello Web App: Learn How to Build a Web App](https://hellowebapp.com/)

ru/css/README.md

Lines changed: 143 additions & 131 deletions
Large diffs are not rendered by default.

ru/django_forms/README.md

Lines changed: 185 additions & 144 deletions
Large diffs are not rendered by default.

ru/django_orm/README.md

Lines changed: 104 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -12,146 +12,191 @@ QuerySet, по сути, — список объектов заданной Мо
1212

1313
Открой свой локальный терминал (не на PythonAnywhere) и набери следующую команду:
1414

15-
(myvenv) ~/djangogirls$ python manage.py shell
16-
15+
{% filename %}command-line{% endfilename %}
16+
```
17+
(myvenv) ~/djangogirls$ python manage.py shell
18+
```
1719

1820
Результат должен быть таким:
1921

20-
(InteractiveConsole)
21-
>>>
22-
22+
{% filename %}command-line{% endfilename %}
23+
```python
24+
(InteractiveConsole)
25+
>>>
26+
```
2327

2428
Ты находишься в интерактивной консоли Django. По сути, это та же интерактивная консоль Python, но с магией Django :) Ты можешь использовать весь синтаксис Python, разумеется.
2529

2630
### Все объекты
2731

2832
Давай попробуем вывести на экран все записи в нашем блоге. Ты можешь сделать это следующей командой:
2933

30-
>>> Post.objects.all()
31-
Traceback (most recent call last):
32-
File "<console>", line 1, in <module>
33-
NameError: name 'Post' is not defined
34-
34+
{% filename %}command-line{% endfilename %}
35+
```python
36+
>>> Post.objects.all()
37+
Traceback (most recent call last):
38+
File "<console>", line 1, in <module>
39+
NameError: name 'Post' is not defined
40+
```
3541

3642
Упс! Ошибка. Она говорит, что не существует объекта с именем Post. И это верно — мы забыли импортировать его!
3743

38-
>>> from blog.models import Post
39-
44+
{% filename %}command-line{% endfilename %}
45+
```python
46+
>>> from blog.models import Post
47+
```
4048

4149
Всё просто: мы импортируем модель `Post` из `blog.models`. Давай попробуем получить все записи блога ещё раз:
4250

43-
>>> Post.objects.all()
44-
<QuerySet [<Post: my post title>, <Post: another post title>]>
45-
51+
{% filename %}command-line{% endfilename %}
52+
```python
53+
>>> Post.objects.all()
54+
<QuerySet [<Post: my post title>, <Post: another post title>]>
55+
```
4656

47-
Это список записей, с которыми мы работали до этого! Мы создали их через панель администратора Django. Теперь же мы хотим создавать записи с помощью Python, так как же мы этого добьемся?
57+
Это список записей, с которыми мы работали до этого! Мы создали их через панель администратора Django. Теперь же мы хотим создавать записи с помощью Python, так как же мы этого добьёмся?
4858

4959
### Создаём объект
5060

5161
Создать объект Post в базе данных можно следующим образом:
5262

53-
>>> Post.objects.create(author=me, title='Sample title', text='Test')
54-
63+
{% filename %}command-line{% endfilename %}
64+
```python
65+
>>> Post.objects.create(author=me, title='Sample title', text='Test')
66+
```
5567

5668
Но у нас есть один недочёт: `me`. Мы должны передать этой переменной экземпляр модели `User`, который будет отвечать за автора записи. Как это сделать?
5769

58-
Давай импортируем модель user для начала:
59-
60-
>>> from django.contrib.auth.models import User
70+
Давай для начала импортируем модель User:
6171

72+
{% filename %}command-line{% endfilename %}
73+
```python
74+
>>> from django.contrib.auth.models import User
75+
```
6276

6377
Какие пользователи есть в нашей базе данных? Попробуй эту команду:
6478

65-
>>> User.objects.all()
66-
<QuerySet [<User: ola>]>
67-
79+
{% filename %}command-line{% endfilename %}
80+
```python
81+
>>> User.objects.all()
82+
<QuerySet [<User: ola>]>
83+
```
6884

6985
Это суперпользователь, которого мы создали ранее! Нам нужен его экземпляр:
7086

71-
me = User.objects.get(username='ola')
72-
87+
{% filename %}command-line{% endfilename %}
88+
```python
89+
>>> me = User.objects.get(username='ola')
90+
```
7391

7492
Как ты можешь заметить, мы получили (`get`) пользователя (`User`) с именем `username` 'ola'. Шикарно! В твоём случае имя, конечно, может отличаться.
7593

7694
Теперь мы, наконец, можем создать наш пост:
7795

78-
>>> Post.objects.create(author=me, title='Sample title', text='Test')
79-
96+
{% filename %}command-line{% endfilename %}
97+
```python
98+
>>> Post.objects.create(author=me, title='Sample title', text='Test')
99+
```
80100

81101
Ура! Хочешь проверить, что всё работает?
82102

83-
>>> Post.objects.all()
84-
<QuerySet [<Post: my post title>, <Post: another post title>, <Post: Sample title>]>
85-
103+
{% filename %}command-line{% endfilename %}
104+
```python
105+
>>> Post.objects.all()
106+
<QuerySet [<Post: my post title>, <Post: another post title>, <Post: Sample title>]>
107+
```
86108

87109
Есть, ещё один пост в списке!
88110

89111
### Добавляем записи
90112

91-
Можешь повеселиться и добавить еще записей. 2-3 будет достаточно.
113+
Можешь повеселиться и добавить ещё записей. 2-3 будет достаточно.
92114

93115
### Фильтрация объектов
94116

95-
Важной особенностью QuerySets является возможность фильтровать объекты. Предположим, нам нужно найти все записи пользователя ola. Мы используем метод `filter` вместо метода `all` в `Post.objects.all()`. В кавычках мы укажем условия, по которым будет построена выборка записей. В нашей ситуации условием будет являться равенство поля `author` переменной `me`. В Django мы можем написать это следующим образом: `author=me`. Теперь наш код выглядит следующим образом:
96-
97-
>>> Post.objects.filter(author=me)
98-
<QuerySet [<Post: Sample title>, <Post: Post number 2>, <Post: My 3rd post!>, <Post: 4th title of post>]>
117+
Важной особенностью QuerySets является возможность фильтровать объекты. Предположим, нам нужно найти все записи пользователя ola. Мы используем метод `filter` вместо метода `all` в `Post.objects.all()`. В скобках мы укажем условия, по которым будет построена выборка записей. В нашей ситуации условием будет являться равенство поля `author` переменной `me`. В Django мы можем написать это следующим образом: `author=me`. Теперь наш код выглядит следующим образом:
99118

119+
{% filename %}command-line{% endfilename %}
120+
```python
121+
>>> Post.objects.filter(author=me)
122+
[<Post: Sample title>, <Post: Post number 2>, <Post: My 3rd post!>, <Post: 4th title of post>]
123+
```
100124

101125
А может быть мы хотим получить все записи со словом 'title' в поле `title`?
102126

103-
>>> Post.objects.filter(title__contains='title')
104-
<QuerySet [<Post: Sample title>, <Post: 4th title of post>]>
105-
127+
{% filename %}command-line{% endfilename %}
128+
```python
129+
>>> Post.objects.filter(title__contains='title')
130+
[<Post: Sample title>, <Post: 4th title of post>]
131+
```
106132

107-
> **Примечание**: Обрати внимание на два символа нижнего подчеркивания (`_`) между `title` и `contains`. Django ORM использует этот синтаксис для разделения имён полей ("title") и операций или фильтров ("contains"). Если ты используешь только один символ нижнего подчеркивания, то получишь ошибку "FieldError: Cannot resolve keyword title_contains".
133+
> **Примечание**: обрати внимание на два символа нижнего подчёркивания (`_`) между `title` и `contains`. Django ORM использует этот синтаксис для разделения имён полей ("title") и операций или фильтров ("contains"). Если ты используешь только один символ нижнего подчёркивания, то получишь ошибку "FieldError: Cannot resolve keyword title_contains".
108134
109135
Ты также можешь получить список всех опубликованных записей. Мы просто отфильтруем записи по полю `published_date`:
110136

111-
>>> from django.utils import timezone
112-
>>> Post.objects.filter(published_date__lte=timezone.now())
113-
[]
137+
{% filename %}command-line{% endfilename %}
138+
```python
139+
>>> from django.utils import timezone
140+
>>> Post.objects.filter(published_date__lte=timezone.now())
141+
[]
142+
```
114143

115144
К сожалению, пост, который мы добавили в консоли Python, ещё не опубликован. Мы можем изменить это! Сначала выберем запись, которую мы хотим опубликовать:
116145

117-
>>> post = Post.objects.get(title="Sample title")
118-
146+
{% filename %}command-line{% endfilename %}
147+
```python
148+
>>> post = Post.objects.get(title="Sample title")
149+
```
119150

120151
Дальше мы опубликуем её с помощью метода `publish`!
121152

122-
>>> post.publish()
123-
153+
{% filename %}command-line{% endfilename %}
154+
```python
155+
>>> post.publish()
156+
```
124157

125-
Теперь попробуй получить список опубликованных сообщений снова (нажмите стрелку вверх 3 раза и затем `enter`):
158+
Теперь попробуй получить список опубликованных сообщений снова (нажми стрелку вверх 3 раза и затем `enter`):
126159

127-
>>> Post.objects.filter(published_date__lte=timezone.now())
128-
<QuerySet [<Post: Sample title>]>
160+
{% filename %}command-line{% endfilename %}
161+
```python
162+
>>> Post.objects.filter(published_date__lte=timezone.now())
163+
[<Post: Sample title>]
164+
```
129165

130166

131167
### Сортировка объектов
132168

133169
QuerySets позволяет сортировать объекты. Давай попробуем сортировку по полю `created_date`:
134170

135-
>>> Post.objects.order_by('created_date')
136-
<QuerySet [<Post: Sample title>, <Post: Post number 2>, <Post: My 3rd post!>, <Post: 4th title of post>]>
137-
171+
{% filename %}command-line{% endfilename %}
172+
```python
173+
>>> Post.objects.order_by('created_date')
174+
[<Post: Sample title>, <Post: Post number 2>, <Post: My 3rd post!>, <Post: 4th title of post>]
175+
```
138176

139177
Мы также можем изменить порядок на противоположный, добавив `-` в начало условия:
140178

141-
>>> Post.objects.order_by('-created_date')
142-
<QuerySet [<Post: 4th title of post>, <Post: My 3rd post!>, <Post: Post number 2>, <Post: Sample title>]>
179+
{% filename %}command-line{% endfilename %}
180+
```python
181+
>>> Post.objects.order_by('-created_date')
182+
[<Post: 4th title of post>, <Post: My 3rd post!>, <Post: Post number 2>, <Post: Sample title>]
183+
```
143184

144185

145186
### Соединение QuerySets
146187

147188
QuerySets можно **сцеплять**, создавая цепочки:
148189

149-
>>> Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
150-
190+
```
191+
>>> Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
192+
```
151193

152194
Это мощный и удобный инструмент, позволяющий писать сложные запросы.
153195

154196
Отлично! Теперь ты готова к следующей части! Чтобы закрыть интерактивную консоль, набери:
155197

156-
>>> exit()
157-
$
198+
{% filename %}command-line{% endfilename %}
199+
```python
200+
>>> exit()
201+
$
202+
```

0 commit comments

Comments
 (0)