무효 클릭 IP 추적 중...
파이썬/django(장고)

[장고 기초] 기본 html을 이용하여 detail view 구현 해보기

꼬예 2021. 11. 17.
[장고 기초] 기본 html을 이용하여 detail view 구현 해보기

여러 페이지중에서 특정 페이지를 접속할때 사용하는 view를  일반적으로 detail view 라고 부릅니다.

 

우리가 흔히 아는 형태는 아래와 같이  <int:id>를 url에 넣어주고 , 

[장고 기초] 기본 html을 이용하여 detail view 구현 해보기

url에서 전달받은 id값은 view함수의 두번째 인자로 전달 되게 됩니다.

그 후 Article.objects.get(id=id)와 같은 형태로 하나의 article을 뽑고 이것을 html에 뿌려주게 되는것이지요.

[장고 기초] 기본 html을 이용하여 detail view 구현 해보기

 

 

 

이번 시간에 우리가 하고싶은 것은, 아래 input창에 id값을 입력해서 해당 detail에 접속하는것입니다.

[장고 기초] 기본 html을 이용하여 detail view 구현 해보기

이를 위해 우리가 먼저 알아야할것은  아래 form 내부에 input태그들이 어떻게 동작하는지 알아야합니다.

[장고 기초] 기본 html을 이용하여 detail view 구현 해보기

url 변화

 

1.  2라는 값을 넣고 제출을 눌러봅니다.

[장고 기초] 기본 html을 이용하여 detail view 구현 해보기 - undefined - url 변화

 

2. 웹페이지가 번쩍하면서 refresh 되고 아무 변화가 없습니다. 이 걸로는 아무것도 할 수 없겠죠?

 

여기에 추가 해야 되는 것은 input tag안에 name을 넣어 주는 것입니.

아래 코드를 보시면  name='q'가 추가 된 것을 알 수 있죠?  

(query를 나타내는 q를 name에 쓰는 것은 관습적인 것이니 참고하시기 바랍니다. )

[장고 기초] 기본 html을 이용하여 detail view 구현 해보기 - undefined - url 변화

 

이번엔 달라진게 있을까요?

다시한번 위 동작을 반복해 봅니다.

[장고 기초] 기본 html을 이용하여 detail view 구현 해보기 - undefined - url 변화

url이 위와 같이 변경이 됩니다. 물음표가 추가되고 name과 우리가 입력한 2가 연결되어서 url을 형성한 것을 알 수 있습니다. 

 

 

 

 

 

action 사용

 

form 태그안에는 action이라는 property를 사용할 수 있는데요. 

해당 action이 어떻게 동작 하는지 우선 실행을 통해 확인해보겠습니다.

 

[장고 기초] 기본 html을 이용하여 detail view 구현 해보기 - undefined -  action 사용

위와 같이 뜬금없이(?) 구글 주소를 action에 넣어보았습니다. 그리고 같은 동작을 바로 실행보죠.

신기하게도 구글 페이지로 화면이 바뀌고 2를 입력한 상태화면이 뜨게됩니다. 

[장고 기초] 기본 html을 이용하여 detail view 구현 해보기 - undefined -  action 사용

이제 어느 정도 action이 어떻게 동작하는지 감이 오셨을텐데요. 우리 입력한 query가 action에 넣은 주소를 기준으로 작동을 하게 됩니다.

 

아래와 같이 action을 기입하고 "/"를 넣거나 아예 아무거나 넣치 않을 경우는 현재 페이지를 기준으로 url을 생성하게 됩니다.

[장고 기초] 기본 html을 이용하여 detail view 구현 해보기 - undefined -  action 사용

 

request 인

urls.py

[장고 기초] 기본 html을 이용하여 detail view 구현 해보기 - undefined - request 인

views.py

[장고 기초] 기본 html을 이용하여 detail view 구현 해보기 - undefined - request 인

이번에는 위와 같이 query를 통해 detail 페이지를 구현할 view를 만들어 보려고합니다. 첫번째 인자로 우리 관습적으로 받았던 request는 어떤 값이 담겨 있을까요? 

[장고 기초] 기본 html을 이용하여 detail view 구현 해보기 - undefined - request 인

뭔지 모르겠지만 GET 요청을 의미하는 GET이 보이네요.  아래와 같이 method를 적어주지 않을 경우 Defaul GET요청이란것을  알 수 있습니다. 

[장고 기초] 기본 html을 이용하여 detail view 구현 해보기 - undefined - request 인

한발 더나아가서..

 

그럼 request.GET에는 어떤 값이 담겨있을까요?

[장고 기초] 기본 html을 이용하여 detail view 구현 해보기 - undefined - request 인

아무것도 입력하지 않고 접속할때에는 

[장고 기초] 기본 html을 이용하여 detail view 구현 해보기 - undefined - request 인

2를 입력하면 아래와 같이 QueryDict형태의 딕셔너리를 얻을 수있는데요.

[장고 기초] 기본 html을 이용하여 detail view 구현 해보기 - undefined - request 인

즉 딕셔너리에서 아이디값을 빼온다면 처음에 봤던 detail view를 구현할 수 있겠죠?

우선 request.GET을 딕셔너리로 선언하고 선언한 딕셔너리에서 get 메소드를 통해 q에 있는 value를 담습니다.

[장고 기초] 기본 html을 이용하여 detail view 구현 해보기 - undefined - request 인

 

그 후 value값이 담긴 query를 id값으로 전달하면 하나의 Article을 뽑을 수 있습니다.

[장고 기초] 기본 html을 이용하여 detail view 구현 해보기 - undefined - request 인

참고로 article_search_view 를 실행할때 의 주소가 /articles/가 추가 되었기 때문에, action에 "/articles/"를 추가해줘야 합니다.

[장고 기초] 기본 html을 이용하여 detail view 구현 해보기 - undefined - request 인

최종 결과:

[장고 기초] 기본 html을 이용하여 detail view 구현 해보기 - undefined - request 인

 

 

 

  • 트위터 공유하기
  • 페이스북 공유하기
  • 카카오톡 공유하기
이 컨텐츠가 마음에 드셨다면 커피 한잔(후원) ☕

댓글

꼬예님의
글이 좋았다면 응원을 보내주세요!