试试使用Django模板功能

简介

这篇文章是由一个初学者记录的,他按照顺序介绍了自己使用RESTful API和Swift开发iPhone优惠券发布服务的步骤。由于在实现过程中一边查找技术要素一边实施,所以实现过程非常迂回。

鉴于Django的模板功能实际上是不必要的,但为了学习目的,我打算尝试一下。我将以上次使用Django创建简单webAPI的(初学者向)代码为基础。

请你提供汉语的参考。

《Python Django超入門》是由掌田津耶乃著作,由秀和システム出版。

环境

Mac OS 10.15可与VSCode 1.39.2、pipenv 2018.11.26、Python 3.7.4和Django 2.2.6兼容。

WebAPI的规范

当您通过URL请求优惠券代码时,将以模板形式显示与该优惠券代码相关联的优惠券内容。

    • リクエストパラメータ:coupon_code

 

    • coupon_codeに0001を指定すると「1000円引きクーポン!」という文字列が返ってくる

 

    • coupon_codeに0002を指定すると「10%引きクーポン!」という文字列が返ってくる

 

    コードを指定しない又は存在しないコードを入力すると「利用できるクーポンがありません」という文字列が返ってくる。

操作步骤

(初学者适用)在Django中创建一个简单的Web API并进行以下修改。

    • Djangoの機能を使うためにアプリーケーションを登録する

 

    • テンプレートのhtmlファイルを作る

 

    • render関数でテンプレートに値を送れるようにviews.pyを修正を実装

 

    動作確認

为了使用 Django 的功能,需要注册应用程序

只需将“coupon”应用程序名称添加到项目文件夹下的settings.py文件中的INSTALLED_APPS中。

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文件。该优惠券的名称将临时设为Amigo Coupon。

<!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>

修改views.py文件使其能够通过render函数将值发送到模板中。

以下几项修改如下。

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)

确认动作 (Confirm action)

test-coupon-6a-0001.png
test-coupon-6a-0007.png

这就是以上内容。

为了备战未来的代码改动,下次将准备使用git进行管理。

bannerAds