在Django专案刚建立的时候,
我们可以从views.py档案当中看到一行被内建的函数库已经被import在里面了,
库名叫做render,
from django.shortcuts import render
render这个函数库,是搭配Django的template架构一起使用的,
在前面我们有提到了Django内建的其他部分,
包括了models,admin,urls,views,static等等,
而template这个部分主要的用途,
是让开发者能够以python进行网页开发使用,
这边介绍一下render函数,
render函数主要用途是当用户端透过URL触发urls.py中所设定的函数时,
可以透过render来回传一个样板至用户端,
使用方法如下:
render(request, template_name, context)
第一个参数内建为request,
template_name则为回传的样板名称,也就是html档案名称,
如果有资料想要带到样板中来显示时,
可以透过context参数来设定,
是以python的dictionary的资料型态输入到样板中,
带入html档案的,
先来做个简单的测试吧,
在这边需要先检查template路径是否有在settings.py中完成设定,
#settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
接着确认一下template资料夹是否有建立在Django的专案资料夹当中,
接下来我们在template资料夹中建立一个子资料夹,
随便命名即可,目的是让我们在使用render函数时可以指定路径来避免同名的html互相冲突,
也可以与APP的资料夹同名,这样管理上比较方便,
完成之後在资料夹中新增一个index.html档案,
并且将下列程序码输入至html档案,
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>第12届铁人赛</title>
</head>
<body>
<h1>铁人赛的进度:Day {{day}} 完成</h1>
<h2>篇名:{{post_title}}</h2>
</body>
</html>
由於在template当中读取变数的语法为{{变数}},
因此在上面的html档案中,{{day}}及{{post_title}}是要透过render带进去的,
接着我们在urls.py档案当中设定指定的URL与函数关系式,
#urls.py
urlpatterns = [
path('admin/', admin.site.urls),
url('^callback',views.callback),
url('^notify',views.notify),
url('^Weather_Predict',views.Weather_Predict),
url('^index',views.index),#当进入http://domain/index网址时,触发index函数
]
接着在views.py中建立index函数:
def index(request):
day = 29
post_title = '[Day 29]用Django架构建置专属的LINEBOT吧 - LIFF(II)template与LIFF'
return render(request,'IT_help/index.html',locals())
其中locals()是将本地参数带入,
我们也可以自订dictionary将参数带入template当中:
def index(request):
data = dict()
data['day']=29
data['post_title']='[Day 29]用Django架构建置专属的LINEBOT吧 - LIFF(II)template与LIFF'
return render(request,'IT_help/index.html',data)
或者我们也可以将在index函数的参数当中设定,
从URL当中将参数带入到template当中,
如果要用URL带入参数,则需要将urls.py重新设定:
#urls.py
urlpatterns = [
path('admin/', admin.site.urls),
url('^callback',views.callback),
url('^notify',views.notify),
url('^index/(\w+)/$',views.index),
url('^Weather_Predict',views.Weather_Predict),
]
将index函数改写为下列方式:
#views.py
def index(request,day):
post_title = '[Day 29]用Django架构建置专属的LINEBOT吧 - LIFF(II)template与LIFF'
return render(request,'IT_help/index.html',locals())
前述两种方式设定完毕後,
都可以在进入http://domain/index 得到下面的结果:
第三种方式需要加入day参数,URL改写为http://domain/index/29
实际操作影片:
由於LIFF是提供给JavaScipt及html网页的前端API,
因此在python基础下将参数带入网页是一个重要的基础,
明天最後一天再讲到关於LINE LIFF网页的建立吧,
今天实在太忙啦~
>>: [2020铁人赛] Day29 - 切换身分Impersonation
声码器 (Vocoder) 合成语音的概念最早是由贝尔实验室的工程师 - 荷马·达德利在 1928 ...
我写的 Rails 的 R+MVC 笔记图 左上角的那个人是使用者,当使用者输入网址连上网址进入网...
昨天跟大家介绍完middleware之後,大家应该都比较了解他的功用了吧!(应该有吧... 那既然大...
字符函数,又分为大小写转换函数及字符处理函数。 大小写转换函数: 字符处理函数: 下篇会从日期单列函...
当我们需要程序1.重复执行2.判断对错就需要用到回圈,像是算面积,算完一个想再算一个可以利用回圈让使...