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

블로그를 따라 만드는 중에 카테고리 페이지를 구현하는데서 막혔다. 


이를 공부하다보니 카테고리 리스트 구현이 궁금해 뒤돌아가서 익히고,


카테고리 테이블이 별도로 없는 걸 다시 알고 모델도 또 공부했다.


공부하고 잊히고 다시 알게 되는 중이다. 알고보니 내가 대충 공부했던 것이다.


역으로 공부했으니 복습은 정방향으로 기록하겠다.


1. 카테고리는 게시글 테이블에 선택 가능한 필드 형태로 넣는다.


Article

id

title

content

category

1

안녕

놀러와

development / personal 중에 선택


블로그에서 게시글 테이블은 제목, 내용, 카테고리만 입력하도록 만들었다.


단, 카테고리는 둘 중 하나 선택하도록 추가적인 설정을 해주었다. 


choice 필드에 대한 자료(https://docs.djangoproject.com/en/2.1/ref/models/fields/)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Article(models.Model):
    DEVELOPMENT = "dv"
    PERSONAL = "ps"
    CATEGORY_CHOICES = (
         (DEVELOPMENT, "development"),
         (PERSONAL, "personal"),
    )
 
    title = models.CharField(max_length=200)
    content = models.TextField()
    category = models.CharField(
         max_length=2,
         choices=CATEGORY_CHOICES,
         default=DEVELOPMENT
    )
cs


2. View에서 카테고리 리스트를 만든다.


article_list는 ORM으로 모든 게시글 데이터가 담긴 변수이다.

(ORM(Object-Relational Mapping)은 애플리케이션과 데이터베이스 간의 데이터 처리를 추상화하여 다룰 수 있는 편리한 방법)

카테고리는 메소드를 통해 풀네임을 변수에 담았다. 


1
2
3
4
category_list = set([
    article.get_category_display()
    for article in article_list
])
cs


3. Templete에서 카테고리 리스트 매핑하기 


1
2
3
{% for category in category_list %}
<li>{{ category }}</li>
{% endfor %}
cs


아직 링크가 걸려있지 않아서 카테고리로서의 기능은 없다.


4. View에서 해당 카테고리만의 게시글 리스트 만들기


GET 방식은 웹브라우저에서 주소창에 입력하여 서버에 데이터를 요청하는 것이다.


네이버에서 무언가를 검색하면 주소창에 /?query=무언가 형태로 작성된 것이 보이는데,


쿼리스트링의 형태로 서버에 데이터를 요청하여 검색페이지가 출력되는 것이다.


이를 카테고리에 비슷하게 적용할 수 있다.


1
category = request.GET.get("category")
cs


주소창에서 /?category=dv 또는 /?category=ps 형태의 쿼리스트링은 딕셔너리 형태로 구성되어있다. 


여기서 밸류값인 dv 또는 ps를 가져오기 위해 작성한다. 그럼 변수 category에 담길 것이다.


1
article_list = Article.objects.filter(category=category)
cs


변수 값으로 필터하여 카테고리에 따라 게시글 리스트를 만들 수 있게 되었다.


5. 카테고리에 링크를 걸기 위해 전면 수정


1) View에서 카테고리 리스트 수정


1
2
3
4
category_list = set([
    article.category, article.get_category_display()
    for article in article_list
])
cs


축약형을 리스트에 새로 넣었다. 카테고리 주소에서 단축형로 쓰이므로


2) Templete에서 카테고리에 링크 걸기


1
2
3
{% for alias, category in category_list %}
<li><a href="/{{ alias }}/">{{ category }}</a></li>
{% endfor %}
cs


단축형, 정식형 순으로 변수로 지정되었으므로 매핑된 경우에도 순서대로 값이 반영된다.






블로그 이미지

쵸잇

,

조동사 可以


1. 가능을 뜻하는 "할 수 있다"를 말한다. 


他可以开车 그는 운전할 수 있다

我们可以再见他。우리는 그를 다시 만날 수 있다. 


*부정형은 不能 으로 써야한다.

不能开车 그는 운전할 수 없다


2. 허락을 뜻하는 "해도 된다"를 말한다


你可以休息 너는 쉬어도 된다

你不可以休息 너는 쉬면 안된다


A: 我可以去他家玩吗? 나 그 사람 집에 놀러 가도 될까요?

B: 可以 / 不可以 응 / 안 돼


A: 我可(以)不可以上网? 나 인터넷 해도 돼?

B: 可以 / 不可以 응 / 안 돼


예문


我可以去你家吗?나 너네집에 가도 돼?

这儿不可以坐。여기에 앉으면 안 돼

他不可以来学校。그는 학교에 오면 안 돼

你可以吃很多菜。너는 음식 많이 먹어도 돼


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

중국어의 Because (因为~, 所以~)  (0) 2018.11.23
결과보어  (0) 2018.11.22
정도보어(상태보어)와 得  (0) 2018.11.19
기초문법 (4) - 방위사  (0) 2018.10.20
기초문법 (3)  (0) 2018.10.05
블로그 이미지

쵸잇

,

정도보어(상태보어)란?


술어(동사·형용사)의 상태, 동작정도를 보충해서 설명해주는 문장 성분이다.


我说汉语。


주어와 술어만으로 표현된 문장으로는 화자의 "중국어 수준"을 알 수 없다.

중국어에서는 이 "수준"을 부가적으로 설명하기 위해서는 술어 다음에 得(de)를 붙이고 "수준"에 대한 수식어 덧붙인다.


我说汉语不怎么样。

정도보어 得는 목적어(汉语)가 아니라 술어(说) 뒤에 위치하여 술어를 보충 설명하는 것이다.


我说汉语说得不怎么样。(我说汉语 + 说得不怎么样) 

쪼개서 해석하면, 나는 중국어를 말한다 + 말하는 정도는 나쁘지 않다 ▶ 나는 나쁘지 않은 정도로 중국어를 말한다



실생활에서는 술어(说)의 중복사용을 피하지만, 정도보어(得) 앞의 술어를 빼서는 안된다.

我汉语说得不怎么样。내 중국어는 나쁘지 않은 정도이다.




我吃得很好。내가 먹는 정도는 아주 좋다 ▶ 나는 잘 먹는다

房间里冷得受不了(Shòu bùliǎo)。방 안의 추운 정도는 참을 수 없다 ▶ 방 안은 참을 수 없을 정도로 춥다

她歌唱不错(bùcuò)。그녀의 노래 부르는 정도는 좋다  그녀는 노래를 잘 부른다

她汉语说得很流利(liúlì)。그녀의 중국어 말하는 정도는 매우 유창하다 그녀는 중국어를 매우 유창하게 말한다

他英语说得不好。그의 영어 말하는 정도는 좋지 않다 그는 영어를 잘 못한다

我跑得不快。내가 달리는 정도는 빠르지 않다 나는 달리기가 빠르지 않다

他英语说得好吗?그의 영어 말하기 정도는 좋아? 그는 영어를 잘 말하니?

跑得快不快? 그가 달리는 정도는 빠르니? ▶ 그는 달리기가 빠르니?


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

결과보어  (0) 2018.11.22
조동사 可以  (0) 2018.11.20
기초문법 (4) - 방위사  (0) 2018.10.20
기초문법 (3)  (0) 2018.10.05
기초 문법 (2)  (0) 2018.10.03
블로그 이미지

쵸잇

,