Skip to content

Commit 59e1f63

Browse files
committed
Update Korean Translation for Django 2.0 & Add warning icon
1 parent 08ba43c commit 59e1f63

12 files changed

Lines changed: 67 additions & 93 deletions

File tree

ko/deploy/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,10 +186,10 @@ Installing setuptools, pip...done.
186186
187187
$ source myvenv/bin/activate
188188
189-
(myvenv) $ pip install django~=1.11.0
189+
(myvenv) $ pip install django~=2.0
190190
Collecting django
191191
[...]
192-
Successfully installed django-1.11.3
192+
Successfully installed django-2.0.6
193193
```
194194

195195
> **Note** `pip install`은 설치가 될 때까지 인내심이 조금 필요해요. 하지만 몇 분 안에 완료될 거니 조금만 기다려보세요. 만약 5분 이상 시간이 지났다면, 무엇인가 잘못된 거니 코치에게 물어보세요.

ko/django_admin/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,6 @@ Superuser created successfully.
4747

4848
![Django admin](images/edit_post3.png)
4949

50-
장고 관리자에 대해서 좀 더 알고 싶다면 장고 공식 문서를 읽어보세요 : https://docs.djangoproject.com/en/1.8/ref/contrib/admin/
50+
장고 관리자에 대해서 좀 더 알고 싶다면 장고 공식 문서를 읽어보세요 : https://docs.djangoproject.com/en/2.0/ref/contrib/admin/
5151

5252
자, 우리는 내 첫 번째 장고 모델을 만들었어요! 잠깐 쉴 시간이 필요해요. 열심히 했으니 재충전을 위해 커피 한 잔(또는 차 한 잔) 또는 뭔가 먹고 돌아오세요.

ko/django_forms/README.md

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -92,20 +92,20 @@ class PostForm(forms.ModelForm):
9292

9393
{% filename %}blog/urls.py{% endfilename %}
9494
```python
95-
url(r'^post/new/$', views.post_new, name='post_new'),
95+
path('post/new', views.post_new, name='post_new'),
9696
```
9797

9898
전체 코드는 아래와 같을 거예요.
9999

100100
{% filename %}blog/urls.py{% endfilename %}
101101
```python
102-
from django.conf.urls import url
102+
from django.urls import path
103103
from . import views
104104

105105
urlpatterns = [
106-
url(r'^$', views.post_list, name='post_list'),
107-
url(r'^post/(?P<pk>\d+)/$', views.post_detail, name='post_detail'),
108-
url(r'^post/new/$', views.post_new, name='post_new'),
106+
path('', views.post_list, name='post_list'),
107+
path('post/<int:pk>/', views.post_detail, name='post_detail'),
108+
path('post/new/', views.post_new, name='post_new'),
109109
]
110110
```
111111

@@ -224,16 +224,11 @@ from django.shortcuts import redirect
224224

225225
{% filename %}blog/views.py{% endfilename %}
226226
```python
227-
from django.shortcuts import redirect
227+
return redirect('post_detail', pk=post.pk)
228228
```
229229

230230
`post_detail`은 우리가 이동해야 할 뷰의 이름이에요 *post_detail 뷰*`pk`변수가 필요한 거 기억하고 있겠죠? `pk=post.pk`를 사용해서 뷰에게 값을 넘겨줄 거에요. 여기서 `post`는 새로 생성한 블로그 글이에요.
231231

232-
{% filename %}blog/views.py{% endfilename %}
233-
```python
234-
return redirect('post_detail', pk=post.pk)
235-
```
236-
237232
잘했어요. 너무 설명이 길어졌네요. 이제 *view* 전체 코드를 확인할게요.
238233

239234
{% filename %}blog/views.py{% endfilename %}
@@ -309,7 +304,7 @@ def post_new(request):
309304

310305
{% filename %}blog/urls.py{% endfilename %}
311306
```python
312-
url(r'^post/(?P<pk>\d+)/edit/$', views.post_edit, name='post_edit'),
307+
path('post/<int:pk>/edit/', views.post_edit, name='post_edit'),
313308
```
314309

315310
우리는 `blog/templates/blog/post_edit.html` 템플릿을 재사용할 거에요. 마지막으로 할 일은 *view* 를 만드는 것입니다.
@@ -363,13 +358,13 @@ form = PostForm(instance=post)
363358
축하합니다! 여러분의 어플리케이션이 점점 더 완벽해지고 있어요!
364359

365360
장고 폼에 대해 자세한 정보가 필요하다면 공식 문서를 읽어보세요. :
366-
https://docs.djangoproject.com/en/1.11/topics/forms/
361+
https://docs.djangoproject.com/en/2.0/topics/forms/
367362

368363
## 보안
369364

370365
링크를 클릭해 새로운 포스트가 나오게 만드는 것은 멋진 일이에요! 지금은 웹사이트를 방문하는 누구든지 글을 쓸 수 있지만, 그렇게 하고 싶지 않을 수 있어요. 나에게만 보이고 다른 사람에게는 보이지 않는 버튼을 만들어 볼게요.
371366

372-
`blog/templates/blog/base.html` 파일에서, `page-header` `div`를 찾아 그 위에 아래와 같이 입력합니다 :
367+
`blog/templates/blog/base.html` 파일에서, `page-header` `div`를 찾아 아래와 같이 작성된 앵커 태그를 찾습니다:
373368

374369
{% filename %}blog/templates/blog/base.html{% endfilename %}
375370
```html
@@ -389,7 +384,7 @@ https://docs.djangoproject.com/en/1.11/topics/forms/
389384

390385
세부 페이지에 있는 수정 아이콘이 기억나죠? 이번에도 동일하게 다른 사람들이 게시글을 수정하지 못하게 할 거에요.
391386

392-
`blog/templates/blog/post_detail.html`파일을 열어 아래 내용을 추가하세요.
387+
`blog/templates/blog/post_detail.html`파일을 열어 아래와 같이 작성된 라인을 찾아주세요:
393388

394389
```html
395390
<a class="btn btn-default" href="{% url 'post_edit' pk=post.pk %}"><span class="glyphicon glyphicon-pencil"></span></a>

ko/django_installation/instructions.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -156,15 +156,15 @@ $ . myvenv/bin/activate
156156
```
157157
(myvenv) ~$ python3 -m pip install --upgrade pip
158158
```
159-
그런 다음 `pip install django~=1.11.0`(Django를 설치하려면 물결표 뒤에 등호 :`~=`)를 입력해 장고를 설치하세요.
159+
그런 다음 `pip install django~=2.0.0`(Django를 설치하려면 물결표 뒤에 등호 :`~=`)를 입력해 장고를 설치하세요.
160160

161161
{% filename %}command-line{% endfilename %}
162162
```
163-
(myvenv) ~$ pip install django~=1.11.0
164-
Collecting django~=1.11.0
165-
Downloading Django-1.11.3-py2.py3-none-any.whl (6.8MB)
166-
Installing collected packages: django
167-
Successfully installed django-1.11.3
163+
(myvenv) ~$ pip install django~=2.0.0
164+
Collecting Django~=2.0.6
165+
Downloading Django-2.0.6-py3-none-any.whl (7.1MB)
166+
Installing collected packages: Django
167+
Successfully installed Django-2.0.6
168168
```
169169

170170
<!--sec data-title="Windows" data-id="django_err_windows" data-collapse=true ces-->

ko/django_models/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ class Post(models.Model):
149149
* `models.DateTimeField` - 날짜와 시간을 의미합니다.
150150
*   `models.ForeignKey` - 다른 모델에 대한 링크를 의미합니다.
151151

152-
시간 관계상 모든 코드를 하나하나 다 설명하지는 않을 거예요. 대신 모델의 필드와 정의하는 방법에 궁금하다면 장고 공식 문서를 꼭 읽어보길 바랍니다. : https://docs.djangoproject.com/en/1.11/ref/models/fields/#field-types)
152+
시간 관계상 모든 코드를 하나하나 다 설명하지는 않을 거예요. 대신 모델의 필드와 정의하는 방법에 궁금하다면 장고 공식 문서를 꼭 읽어보길 바랍니다. : https://docs.djangoproject.com/en/2.0/ref/models/fields/#field-types)
153153

154154
`def publish(self):`는 무슨 뜻일까요? 이것이 바로 앞서 말했던 `publish`라는 메서드(method) 입니다. `def`는 이것이 함수/메서드라는 뜻이고, `publish`는 메서드의 이름입니다. 원한다면 메서드 이름을 변경할 수도 있어요. 이름을 붙일 때는 공백 대신, 소문자와 언더스코어를 사용해야 합니다. 예를 들어, 평균 가격을 계산하는 메서드는 `calculate_average_price`라고 부를 수 있겠네요.
155155

ko/django_urls/README.md

Lines changed: 15 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -20,104 +20,79 @@ URL은 웹 주소랍니다. 웹 사이트를 방문할 때마다 브라우저의
2020
2121
[...]
2222
"""
23-
from django.conf.urls import url
2423
from django.contrib import admin
24+
from django.urls import path
2525

2626
urlpatterns = [
27-
url(r'^admin/', admin.site.urls),
27+
path('admin/', admin.site.urls),
2828
]
2929
```
3030

3131
장고가 이미 어떤 내용을 넣어 두었네요.
3232

33-
`#`로 시작되는 줄은 주석이에요. 파이썬은 주석을 실행하지 않아요. 꽤 유용하겠죠?
33+
세 개의 따옴표들(`"""`, `'''`) 사이에 있는 줄들은 독스트링(docstring)이라 불려요. 파일의 최상단이나 클래스 혹은 메서드 위에 적어두면, 그것이 어떤 역할을 하는지 알려주는 역할을 합니다. 파이썬에서 실행되지는 않을 거예요.
3434

3535
이전 장에서 봤던 관리자 URL도 여기에 이미 있어요.
3636

3737
{% filename %}mysite/urls.py{% endfilename %}
3838
```python
39-
url(r'^admin/', admin.site.urls),
39+
path('admin/', admin.site.urls),
4040
```
4141

4242
장고는 `admin/`로 시작하는 모든 URL을 *view*와 대조해 찾아냅니다. 무수히 많은 URL이 `admin URL`에 포함될 수 있어 일일이 모두 쓸 수 없답니다. 그래서 정규표현식을 사용합니다.
4343

44-
## 정규표현식(Regex)
45-
46-
장고가 URL을 뷰에 매칭시키는 방법이 궁금하죠? 이 부분은 조금 어렵게 느껴질 수 있어요. 장고는 `regex`를 사용하는데, 이는 `정규표현식(regular expressions)`의 줄임말입니다. 정규식은 정말 (아주!) 많은 검색 패턴의 규칙을 가지고 있어요. 정규식은 어려운 내용이라 자세하게 알아보지 않을 거에요.
47-
48-
URL패턴 만드는 방법이 궁금하다면, 다음 표기법을 확인하세요. 이 중 몇 가지 규칙만 사용할 거에요.
49-
50-
* ^ : 문자열이 시작할 떄
51-
* $ : 문자열이 끝날 때
52-
* \d : 숫자
53-
* + : 바로 앞에 나오는 항목이 계속 나올 때
54-
* () : 패턴의 부분을 저장할 때
55-
56-
이외에도 문자열을 이용해 url을 만들 수 있어요.
57-
58-
`http://www.mysite.com/post/12345/`라는 사이트가 있다고 합시다. 여기에서 `12345`는 글 번호를 의미합니다.
59-
60-
뷰마다 모든 글 번호을 일일이 매기는 것은 정말 힘들죠. 정규표현식으로 url패턴을 만들어 숫자값과 매칭되게 할 수 있어요. 이렇게 말이죠. `^post/(\d+)/$`. 어떤 뜻인지 하나씩 살펴봅시다.
61-
62-
* **^post/** : url이(오른쪽부터) `post/`로 시작합니다.
63-
* **(\d+)** : 숫자(한 개 이상)가 있습니다. 이 숫자로 조회하고 싶은 게시글을 찾을 수 있어요.
64-
* **/** : `/`뒤에 문자가 있습니다.
65-
* **$** : url 마지막이 `/`로 끝납니다.
66-
6744
## 나의 첫 번째 Django url!
6845

69-
첫 번째 URL을 만들어 봅시다! 우리는 '<http://127.0.0.1:8000/>'홈페이지 주소로 만들어 글 목록이 보이게 만들어 볼 거에요.
46+
첫 번째 URL을 만들어 봅시다! 우리는 '<http://127.0.0.1:8000/>' 이 주소를 우리 블로그의 홈페이지 주소로 쓸 것이고, 이 주소로 들어가면 글 목록이 보이게 만들어 볼 거에요.
7047

7148
또한 `mysite/urls.py`파일을 깨끗한 상태로 유지하기 위해, `blog` 애플리케이션에서 메인 `mysite/urls.py`파일로 url들을 가져올 거에요.
7249

73-
먼저 `#`로 시작하는 줄을 삭제하고 `main url('')``blog.urls`를 가져오는 행을 추가해 봅시다.
50+
먼저, `blog.urls`를 가져오는 행을 추가해 봅시다. `blog.urls`를 가져오려면, `include` 함수를 이용해야 합니다. 그 함수를 이용하려면, `from django.urls` 로 시작하는 행을 수정해야 할 거에요.
7451

7552
이제 `mysite/urls.py` 파일은 아래처럼 보일 거에요.
7653

7754
{% filename %}mysite/urls.py{% endfilename %}
7855
```python
79-
from django.conf.urls import include, url
8056
from django.contrib import admin
57+
from django.urls import path, include
8158

8259
urlpatterns = [
83-
url(r'^admin/', admin.site.urls),
84-
url(r'', include('blog.urls')),
60+
path('admin/', admin.site.urls),
61+
path('', include('blog.urls')),
8562
]
8663
```
8764

8865
지금 장고는 http://127.0.0.1:8000/ 로 들어오는 모든 접속 요청을 `blog.urls`로 전송해 추가 명령을 찾을 거예요.
8966

90-
파이썬에서 정규 표현식을 작성할 때는 항상 문자열 앞에 `r`을 붙입니다. 이는 파이썬에게는 별 의미가 없지만, 파이썬에게 문자열에 특수 문자를 있다는 것을 알려줍니다.
91-
9267
## blog.urls
9368

9469
`blog/urls.py`이라는 새 파일을 생성하세요. 좋아요! 이제 아래 두 줄을 추가하세요.
9570

9671
{% filename %}blog/urls.py{% endfilename %}
9772
```python
98-
from django.conf.urls import url
73+
from django.urls import path
9974
from . import views
10075
```
10176

102-
우리는 장고의 메소드와 `blog` 애플리케이션에서 사용할 모든 `views`를 불러오고 있어요. (물론 아직 뷰를 하나도 안 만들었지만, 곧 만들거니 조금만 기다리세요!)
77+
우리는 장고에서 제공되는 함수 `path` `blog` 애플리케이션에서 사용할 모든 `views`를 불러오고 있어요. (물론 아직 뷰를 하나도 안 만들었지만, 곧 만들거니 조금만 기다리세요!)
10378

10479
그 다음, 첫 번째 URL 패턴을 추가하세요.
10580

10681
{% filename %}blog/urls.py{% endfilename %}
10782
```python
10883
urlpatterns = [
109-
url(r'^$', views.post_list, name='post_list'),
84+
path('', views.post_list, name='post_list'),
11085
]
11186
```
11287

113-
이제 `post_list`라는 이름의 `view``^$` URL에 할당되었습니다. 이 정규표현식은 `^`에서 시작해 `$`로 끝나는 지를 매칭할 것입니다. 즉 문자열이 아무것도 없는 경우만 매칭하겠죠. 틀린 것이 아니에요. 왜냐하면 장고 URL 확인자(resolver)는 '<http://127.0.0.1:8000/>' 는 URL의 일부가 아니기 때문입니다. 이 패턴은 장고에게 누군가 웹사이트에 '<http://127.0.0.1:8000/>' 주소로 들어왔을 때 `views.post_list`를 보여주라고 말할 거에요.
88+
이제 `post_list`라는 이름의 `view`루트 URL에 할당되었습니다. 이러한 URL 패턴은 빈 문자열에 매칭이 되며, 장고 URL 확인자(resolver)는 전체 URL 경로에서 접두어(prefix)에 포함되는 도메인 이름(i.e. <http://127.0.0.1:8000/>)을 무시해서 받아들입니다. 따라서, 이 패턴은 장고에게 누군가 웹사이트에 '<http://127.0.0.1:8000/>' 주소로 들어왔을 때 `views.post_list`를 보여주라고 말할 거에요.
11489

11590
마지막 부분인 `name='post_list'`는 URL에 이름을 붙인 것으로 뷰를 식별합니다. 뷰의 이름과 같을 수도 완전히 다를 수도 있습니다. 이름을 붙인 URL은 프로젝트의 후반에 사용할 거예요. 그러니 앱의 각 URL마다 이름 짓는 것은 중요합니다. URL에 고유한 이름을 붙여, 외우고 부르기 쉽게 만들어야 해요.
11691

11792
http://127.0.0.1:8000/ 접속했는데 '웹 페이지를 사용할 수 없음(web page not available)'이라는 메시지가 표시되었나요?. 이는 서버(`runserver`라고 입력하는 것을 기억 하는가?)가 실행되지 않았기 때문이에요. 에러가 발생한 이유를 찾으려면 서버 콘솔 창을 보세요.
11893
![Error](images/error1.png)
11994

120-
콘솔에서 에러가 발생했네요. 하지만 걱정하지 마세요. 에러는 해결할 방법을 알려준답니다. :   __no attribute 'post_list'__ 라는 메시지가 보일 텐데요. 이것은 장고가 찾고 사용하려고하는 **가 아직 없다는 거에요. 이 단계에서 `/admin/`로도 접속되지 않을 거에요. 앞으로 고쳐볼 테니 걱정하지 마세요.
95+
콘솔에서 에러가 발생했네요. 하지만 걱정하지 마세요. 에러는 해결할 방법을 알려준답니다. :   __no attribute 'post_list'__ 라는 메시지가 보일 텐데요. 이것은 장고가 찾고 사용하려고하는 **가 아직 없다는 거에요. 이 단계에서 `/admin/`로도 접속되지 않을 거에요. 앞으로 고쳐볼 테니 걱정하지 마세요. 혹시 여러분이 다른 에러 메시지를 보게 된다면, 웹서버를 껐다 켜보세요. 그러기 위해서는, 커맨드라인(혹은 콘솔)으로 가서 `Ctrl + C`를 눌러 웹 서버를 중단합니다. 다시 `python manage.py runserver`명령을 실행해 서버를 재시작합니다.
12196

12297
> 장고 URL 설정에 대해 더 알고 싶다면 장고 공식 문서를 읽어보세요. :
123-
https://docs.djangoproject.com/en/1.11/topics/http/urls/
98+
https://docs.djangoproject.com/en/2.0/topics/http/urls/

ko/django_views/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def post_list(request):
2525
return render(request, 'blog/post_list.html', {})
2626
```
2727

28-
방금 `post_list`라는 함수(`def`) 만들어 `요청(request)`을 넘겨받아 `render`메서드를 호출합니다. 이 함수는 호출하여 받은(return) `blog/post_list.html`템플릿을 보여줍니다.
28+
방금 `post_list`라는 함수(`def`)를 만들었습니다. 이 함수는 `요청(request)`을 넘겨받아 `render`메서드를 호출합니다. 이 함수는 `render` 메서드를 호출하여 받은(return) `blog/post_list.html`템플릿을 보여줍니다.
2929

3030

3131
파일을 저장하고, http://127.0.0.1:8000/ 로 접속해 확인해보세요.
@@ -36,5 +36,5 @@ def post_list(request):
3636

3737
*TemplateDoesNotExist*는 쉽게 해결할 수 있습니다. 잘 따라왔다면 방금 에러가 보이는게 맞아요. 다음 장에서 버그를 해결하기 위해 템플릿 파일을 만들 거에요!
3838

39-
> 장고 뷰에 대해 더 알고 싶다면 장고 공식 문서를 읽어보세요. : https://docs.djangoproject.com/en/1.11/topics/http/views/
39+
> 장고 뷰에 대해 더 알고 싶다면 장고 공식 문서를 읽어보세요. : https://docs.djangoproject.com/en/2.0/topics/http/views/
4040

ko/dynamic_data_in_templates/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,4 +75,4 @@ def post_list(request):
7575
여기까지에요! 템플릿 파일로 돌아가 쿼리셋을 보이게 만들어 봅시다.
7676

7777
쿼리셋에 대해 더 알고 싶다면 장고 공식 문서를 읽어보세요. :
78-
https://docs.djangoproject.com/en/1.8/ref/models/querysets/
78+
https://docs.djangoproject.com/en/2.0/ref/models/querysets/

0 commit comments

Comments
 (0)