장고의 템플릿 기능 사용하기

8164 단어 WebAPI파이썬장고

개요



 이 기사는 초보자 자신이 RESTful API와 swift로 iPhone 용 쿠폰 전달 서비스를 개발한 절차를 차례로 기사로하고 있습니다. 기술 요소를 하나씩 조사하면서 실장했기 때문에 매우 먼 실장이 되고 있습니다.

Django의 템플릿 기능은 본래 불필요합니다만, 학습을 위해서 시도하기로 합니다. 이전 (초보자용) Django로 간단한 webAPI를 만들어 봅니다. 에서 만든 코드를 기반으로 합니다.

참고



Python Django 초입문 카마타 츠야노

환경



Mac OS 10.15
VSCode 1.39.2
pipenv 2018.11.26
파이썬 3.7.4
장고 2.2.6

webAPI 사양



쿠폰 코드를 URL로 요청하면 쿠폰 코드에 연결되는 쿠폰의 내용을 템플릿으로 표시합니다.
  • 요청 파라미터: coupon_code
  • coupon_code에 0001을 지정하면 "1000 엔 할인 쿠폰!"이라는 문자열이 반환됩니다
  • coupon_code에 0002를 지정하면 "10 % 할인 쿠폰!"이라는 문자열이 반환됩니다.
  • 코드를 지정하지 않거나 존재하지 않는 코드를 입력하면 "사용 가능한 쿠폰이 없습니다"라는 문자열이 반환됩니다.

  • 절차



    (초보자용) Django로 간단한 webAPI를 만들어보세요 에서 작성한 코드에 다음의 수정을 합니다.
  • 장고의 기능을 사용하기 위해 응용 프로그램 등록
  • 템플릿 html 파일 만들기
  • render 함수로 템플릿에 값을 보낼 수 있도록 views.py 수정을 구현
  • 동작 확인

  • 장고의 기능을 사용하기 위해 애플리케이션 등록



    프로젝트 이름 폴더 아래의 settings.py의 INSTALLED_APPS에 앱 이름 (coupon)을 추가하기 만하면됩니다.

    settings.py
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'coupon', #追加した行
    ]
    

    템플릿 html 파일 만들기


    coupon 디렉토리 아래에 templates 디렉토리를 만들고 templates 디렉토리 아래에 coupon 디렉토리를 만듭니다.
    (django의 파일 참조의 사양상, 복수의 index.html 파일을 작성했을 때를 고려해 디렉토리를 이중으로 하는 것이 추천되고 있다.)

    만든 coupon 디렉토리에 index.html을 만듭니다. 쿠폰의 이름은 만일 아미고 쿠폰입니다.

    index.html
    <!DOCTYPE html>
    <html lang="ja">
    <head>
        <meta charset="utf-8">
        <title>アミーゴクーポン</title>
    </head>
    <body>
        <h1>アミーゴクーポン</h1>
        <p>
            <ul>
                <li>クーポンコード:{{coupon_code}}</li>
                <li>特典:{{coupon_benefits}}</li>
                <li>有効期限:{{coupon_deadline}}</li>
                <li>{{message}}</li>
            </ul>
        </p>
    </body>
    </html>
    

    render 함수가 템플릿에 값을 보낼 수 있도록 views.py 수정



    아래와 같이 수정합니다.

    views.py
    from django.shortcuts import render
    from django.http import HttpResponse
    
    # Create your views here.
    def coupon(request):
        if 'coupon_code' in request.GET:
            coupon_code = request.GET['coupon_code']
            if coupon_code == '0001':
                benefit = '1000円引きクーポン!'
                deadline = '2019/10/31'
                message = ''
            elif coupon_code == '0002':
                benefit = '10%引きクーポン!'
                deadline = '2019/11/30'
                message = ''
            else:
                benefit = 'NA'
                deadline = 'NA'
                message = '利用可能なクーポンが見つかりません'
    
            params = {
                'coupon_code':coupon_code,
                'coupon_benefits':benefit,
                'coupon_deadline':deadline,
                'message':message,
            }
            return render(request, 'coupon/index.html', params)
    

    동작 확인



    변경 사항을 저장한 후 django 웹 서버를 시작하고 브라우저에서 다음 URL에 액세스합니다.http://127.0.0.1:8000/coupon/?coupon_code=0001

    coupon_code의 요청을 0002, 0007로 변경해보십시오.



    이상입니다.

    다음 번에는 향후 코드 개조에 대비하여 영어로 관리할 수 있도록 합니다.

    좋은 웹페이지 즐겨찾기