728x90
반응형
lotto - 앱 다듬기
1 | url(r'^lotto/(?P<lottokey>[0-9]+)/detail/$', views.detail, name = "lotto_detail"), | cs |
전반적인 과정을 끝이났고 추가적인 기능을 구현해보자.
우선 디테일 페이지를 구현하기 위해 urls.py를 수정한다.
위의 코드는 숫자로 구별해서 디테일 페이지와 연결하는 것이다.
이 숫자를 파라미터로 전달하기 위해서는
(?P<변수이름>전달할값)과 같은 문법을 사용한다.
1 2 3 | def detail(request, lottokey): lotto = GuessNumbers.objects.get(pk = lottokey) return render(request, "lotto/detail.html", {"lotto": lotto}) | cs |
따라서 이 url과 연결하기 위한 view의 detail 함수를 만들어 준다.
url에서 전달 받은 값은 2번째 인자에서 부터 넣어줄 수 있다.
이렇게 받은 키값은 primary key이므로 GuessNumbers의 많은 인스턴스들로 부터
해당 primary key의 값만 추출하여 lotto에 저장할 수 있다.
이렇게 받은 값을 detail.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 | <!DOCTYPE html> {% load staticfiles %} <html lang="ko"> <head> <title>My Little Lotto</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"> <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"> <link href="//fonts.googleapis.com/css?family=Space+Mono" rel="stylesheet"> <link rel="stylesheet" href="{% static 'css/lotto.css'%}"> </head> <body> <div class="page-header"> <h1>My Lotto Page</h1> </div> <div class="container lotto"> <h2>{{lotto.text}}</h2> <p> by {{lotto.name}}</p> <p> {{lotto.update_date}}</p> <p> {{lotto.lottos|linebreaksbr}}</p> </div> </body> </html> | cs |
다음으로 detail.html을 추가해 준다.
1 2 3 4 5 6 | <div class="page-header"> <h1>My Lotto Page <a href="{% url 'new_lotto' %}"><span class="glyphicon glyphicon-plus btn btn-default"></span></a></h1> </div> <h2><a href="{% url 'lotto_detail' lottokey=lotto.pk %}">{{lotto.text}}</a></h2> | cs |
그리고 추가한 default.html을 수정한다.
먼저 로또를 추가할 수 있는 new_lotto 링크 버튼을 추가한 한다.
그리고 해당 로또 값을 클릭하면 'detail'이라는 이름을 가진 url값으로 넘어가고
lottokey라는 lotto.pk도 함께 전달한다.
출처 : 인프런, 파이썬 웹 프로그래밍, Django로 웹 서비스 개발하기
반응형
'개발' 카테고리의 다른 글
[Django] sns - 로그인과 로그아웃 구현하기 (0) | 2017.06.30 |
---|---|
[Django] sns - 앱 초기화 (0) | 2017.06.29 |
[Django] lotto - POST 처리 (0) | 2017.06.28 |
[Django] lotto - form 만들기 (0) | 2017.06.28 |
[Django] lotto - MTV 연동하기 (0) | 2017.06.28 |
댓글