반응형
[Django] Request/Response/Redirect
- dict type 데이터 전달받기
1.
2.
html 생성
3.
views에 연결 메소드 생성
- dict타입으로 dict타입인 mem을 전달한다. (주의해서 보기!)
1 2 3 4 5 6 | def show_member(request): # DB 에서 읽어온 회원 정보라고 가정하자 mem={"num":1,"name":u"김구라","addr":u"노량진"} # html 페이지에 전달할 dict 에 mem 이라는 키값으로 dict type # 전달하기 return render_to_response("show_member.html",{"mem":mem}) | cs |
4.
urls에서 맵핑시키기
1 2 3 4 5 6 7 8 9 10 11 12 13 | #-*- coding: utf-8 -*- from django.conf.urls import url from django.contrib import admin from Django01 import views urlpatterns = [ # root (빈) 요청이 들어왔을 때 views.py 에 있는 index 메솓로 # 요청 처리하기 # /show_member url(r"^show_member/$", views.show_member) ] | cs |
5.
html에서 받기
1 2 3 4 5 6 7 8 9 10 11 12 | <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>templates/show_member.html</title> </head> <body> <p>번호 : <strong>{{mem.num}}</strong></p> <p>이름 : <strong>{{mem.name}}</strong></p> <p>주소 : <strong>{{mem.addr}}</strong></p> </body> </html> | cs |
- tuple type 데이터 전달받기
1.
index에 링크 추가
1 | <li><a href="friends">friends</a></li> | cs |
2.
views
1 2 3 4 5 6 | def friends(request): # DB에서 읽어온 친구 목록이라고 가정하자 friends=(u"김구라", u"해골", u"원숭이", u"주뎅이", u"덩어리") # dict 에 friends 라는 키값으로 tuple type 전달하기 return render_to_response("friends.html", {"friends":friends}) | cs |
3.
urls
1 2 | # /friends/ 요청처리 url(r"^friends/$", views.friends) | cs |
4.
html에서 받기
- tuple에 들어있는 문자열 받기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>친구 목록입니다.</title> </head> <body> <ul> {% for item in friends %} <li>{{item}}</li> {% endfor %} </ul> </body> </html> | cs |
- tuple에 있는 dict타입 문자 받기
1.
index에 링크 추가
1 | <li><a href="members">members</a></li> | cs |
2.
views
1 2 3 4 5 6 7 8 9 10 11 | def members(request): # DB 에서 읽어온 회원 목록 이라고 가정하자 mem1 ={"num":1, "name":u"김구라", "addr":u"노량진"} mem2 ={"num":2, "name":u"해골", "addr":u"행신동"} mem3 ={"num":3, "name":u"원숭이", "addr":u"상도동"} # 회원 목록이 들어있는 tuple members=(mem1, mem2, mem3) # dict type 이 들어있는 tuple type 전달하기 return render_to_response("members.html", {"members":members}) | cs |
3.
urls
1 2 | # /members/ 요청처리 url(r"^members/$", views.members) | cs |
4.
html에서 받기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <link rel="stylesheet" href="/static/css/bootstrap.css" /> </head> <body> <div class="container"> <table class="table table-bordered"> <thead> <tr> <th>번호</td> <th>이름</td> <th>주소</td> </tr> </thead> <tbody> {% for item in members %} <tr> <td>{{item.num}}</td> <td>{{item.name}}</td> <td>{{item.addr}}</td> </tr> {% endfor %} </tbody> </table> </div> | cs |
- get방식 parameter 넘겨주기
1.
index에 링크 추가
-
1 | <li><a href="detail?num=999">글 자세히 보기</a></li> | cs |
2.
views
1 2 3 4 5 6 | def detail(request): # GET 방식 전송 파라미터 추출하기 num = request.GET.get("num") print "num:", num return HttpResponse("detail ok") # 임시응답 | cs |
3.
urls
1 2 | # /detail/ 요청처리 url(r"^detail/$", views.detail), | cs |
4.
출력결과
- post방식 처리하기
1.
index.html에 post방식의 form을 만든다.
1 2 3 4 5 6 7 | <!-- post 방식 전송을 하기 위해서는 csrf_token 이 필요하다 --> <form action="insert/" method="post"> {% csrf_token %} <label for="msg">메세지</label> <input type="text" name="msg" id="msg" /> <button type="submit">전송</button> </form> | cs |
2.
views
1 2 3 4 5 6 | def insert(request): # POST 방식 전송 파라미터 추출하기 msg = request.POST.get("msg") print "msg:", msg return HttpResponse("insert ok") | cs |
3.
urls
1 2 | # /insert/ post방식 요청처리 url(r"^insert/$", views.insert), | cs |
- redirect 처리하기
1.
html에 링크추가
1 | <li><a href="/game/play">링크 클릭후 주소창 확인!</a></li> | cs |
2.
views
- 리다일렉트 이동하도록 /game/stop 으로 한뒤
- url에서 gameStop으로 요청을 보내면 응답한다.
1 2 3 4 5 6 7 8 | def gamePlay(request): print "/game/play 요청 처리됨" # 리다일렉트 이동 return HttpResponseRedirect("/game/stop/") def gameStop(request): return HttpResponse(u"redirect 이동됨") | cs |
3.
urls
- /game/play 요청 처리
1 2 3 | # /game/play 요청처리 url(r"^game/play/", views.gamePlay), url(r"^game/stop/", views.gameStop), | cs |
반응형
'WEB기초 > Django' 카테고리의 다른 글
[Django] CRUD 만들기 (0) | 2017.08.21 |
---|---|
[Django] application 이용하기 (0) | 2017.08.18 |
[Django] Django시작하기 (0) | 2017.08.17 |
댓글