试试使用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)


这就是以上内容。
为了备战未来的代码改动,下次将准备使用git进行管理。