'전체 글'에 해당되는 글 88건

중국어로 "~때문에" 표현을 쓰고 싶었는데 드디어 책에 나왔다. (아직 한참 초보가 분명하다.)


因为~, 所以~ (Yīn wéi~, suǒyǐ~)

~때문에, 그래서 ~하다


因为买了很多书,所以钱都花光了。

(때문에 샀다 많은 책, 그래서 돈 모두 썼다 다 ▶ 책을 많이 샀기 때문에 모든 돈을 다 써버렸다)


因为太累了,所以就在家里休息。

(때문에 너무 피곤했다, 그래서 바로 집에서 쉬었다 ▶ 너무 피곤했기 때문에 곧장 집에서 쉬었다)


因为我妈来了,所以不能去你家玩儿。

(때문에 우리 엄마 왔다, 그래서 갈 수 없다 너네 집 놀러 ▶ 엄마가 왔기 때문에 너네집에 놀러갈 수 없다)


因为今天下雨,所以不能去跑步。

(때문에 오늘 비온다, 그래서 갈 수 없다 달리러 ▶ 오늘 비가 오기 때문에 달리기하러 갈 수 없다)


因为我喜欢中国菜,所以学汉语。

(때문에 나는 중국음식을, 그래서 배운다 중국어를 ▶ 나는 중국음식을 좋아해서 중국어를 배운다)


因为天气很冷,所以要多穿衣服。

(때문에 날씨가 춥다, 그래서 입어야한다 많은 옷을 ▶ 날씨가 춥기 때문에 옷을 많이 입어야한다)


因为最近很忙,所以没有时间休息。

(때문에 최근 바쁘다, 그래서 없다 시간 쉴 ▶ 최근에 바빠서 쉴 시간이 없다)

'외국어 > 중국어' 카테고리의 다른 글

조동사 会 파헤치기  (0) 2018.11.30
결과보어  (0) 2018.11.22
조동사 可以  (0) 2018.11.20
정도보어(상태보어)와 得  (0) 2018.11.19
기초문법 (4) - 방위사  (0) 2018.10.20
블로그 이미지

쵸잇

,

GET과 POST

코딩 연습/Django 2018. 11. 23. 13:51

GET 방식

- 지정한 URL의 정보를 가져온다.

- 웹 브라우저를 이용하여 서버로부터 웹 페이지, 이미지, 동영상 등을 가져오려 할 때 사용하는 방식이다.

- 서버 시스템의 상태를 바꾸지 않는 요청시 사용한다.

단점

- URL의 길이 제한이 있으므로 보낼 수 있는 데이터의 양이 적다

- 전달되는 데이터가 웹 브라우저의 주소창에 노출되어 보안 측면에서 불리하다

장점

- URL에 데이터가 포함되므로 검색 폼에서 유용하다. URL을 북마크해두고 공유하기 좋다.


POST 방식

- 대표적 기능으로 리소스를 생성하는 것이다. 예시로 블로그에 글이나 댓글을 등록하는 경우다.

- 서버 시스템의 상태를 바꾸는 요청시에 사용한다.

블로그 이미지

쵸잇

,

폼을 만드는 과정을 생각해보자


1. 웹사이트에서 사용자를 통해 어떤 데이터를 입력 받을지 고민


나의 목표는 블로그 방문자의 댓글을 입력 받고 이를 데이터베이스에 보관하는 것이다.

댓글의 기록은 모델에서 Comment 클래스 형태로 username 필드content 필드를 가지고 있다.

데이터베이스는 만들어졌으니 입력 받을 수 있는 폼(form)을 만들어야한다. *폼은 일종의 양식이라 보면 된다.

폼을 통해 입력 받을 데이터는 username과 content이다. 댓글을 남기는 사람댓글 내용을 말한다.



2. 템플릿에서 앞서 고민한 내용을 담은 폼을 만든다.


1
2
3
4
5
6
<form method="post" action="">
    {% csrf_token %}
    <input name="username" />
    <input name="content" />
    <button type="submit">댓글달기</button>    
</form>
cs


*폼에서는 CSRF 공격을 방지하기 위해 {% csrf_token %} 작성한다. 폼을 통해 악의적인 스크립트 문장이 들어올 수 있다.


폼 태그를 사용하려면 method 지정과 action 지정이 필요하다.

method는 get과 post 중에 하나인데, 폼은 데이터를 불러오는게 아니라 저장하는 역할을 하므로 post를 사용해야한다.

action은 입력할 데이터를 받을 웹페이지를 지정하는데 현재페이지인 경우 공백을 둔다.

input은 사용자가 데이터를 입력하는 공간을 만들어준다. 

name은 어떤 데이터인지 명시하고, view에서 데이터를 전달하는 매개변수로도 쓰인다.

button은 말그대로 입력을 완료하고 제출할 수 있도록 버튼을 만들어준다.

submit은 버튼을 제출 형태로 사용하도록 하기 위함이다.



1
2
3
4
5
6
7
8
9
10
if request.method == "POST":
    username = request.POST.get("username")
    content = request.POST.get("content")
    Comment.objects.create(
        article=article_id,
        username=username,
       content=content,
    )
 
    return HttpResponseRedirect("/{}/".format(article_id))
cs



GET 방식은 비어있는 폼 양식을 불러오는 역할을 하는데, 아직은 쓰이지 않으므로 생략했다.

view에서는 템플릿을 통해 입력받은 데이터를 데이터베이스에 저장하는 역할을 하므로 POST 방식 사용한다.


request.POST는 웹사이트에서 사용자가 입력하고 제출된 데이터를 갖고 있다.

request.POST.get는 조건에 맞는 값을 하나 가져오는 쿼리로서 username과 content 값을 호출한다. 

이를 각각 username과 content 변수에 담는다.


Comment.objects.create는 Comment 클래스에 새로운 인스턴스를 추가하는 것이다.

Comment 클래스에는 3개의 필드(article, username, content)가 포함되어 있으므로 순서대로 값을 지정한다.

article의 경우에는 url을 통해서 받은 게시글의 id 값이 입력된다. 


HttpResponseRedirect 메소드화면을 자동으로 새로고침 해주어 데이터베이스의 변화를 즉각 반영한다. 


*Comment 클래스의 인스턴스를 만들 때 주의할 점 - 모든 필드에 데이터 값들이 들어가야한다.



블로그 이미지

쵸잇

,