聊聊Flask的项目结构(二)——静态文件的管理

在一个项目中如何去管理页面模板,样式,js脚本,图片等一件重要的事情,Flask在这方面已经帮我们默认了两个路径:

1、Jinja2页面模板 (templates文件夹)

2、静态文件(static文件夹)

所以我们只需要按照这个命名在我们的weixin文件夹下面创建这两个路径即可。(如下图所示)
这里写图片描述

1、html模板渲染

接下来就是怎么调用了,首先我们讲一下页面模板的渲染,flask中使用到的函数是render_template函数,render_template函数的第一个参数就是html模板文件,后面的参数是我们需要传到这个视图函数中的参数。render_template默认会从项目路径下面的templates文件夹中寻找html模板文件。

首先我们在templates文件夹中创建一个名为index.html的网页文件。

然后在admin中的视图文件中新增一个视图函数

wenxin/admin/views.py

...
from flask import render_template
...
@admin.route("/helloworld/<username>")

def helloworld(username):

    username2 = "near"

    return render_template("index.html", username=username, username2=username2)

从上面可以看到我给页面传递了一个参数username2,同时如果在访问localhost/admin/helloworld时,如果带上一个字符串的话,即localhost/admin/helloworld/adb的话,那么根据helloworld()视图函数的写法,abc将会被赋值给username。

我们在index.html中将这两个变量显示出来。在jinja2中,变量显示要用{{ }}这样子的括号括起来。

weixin/templates/index.html

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Hello World</title>

</head>

<body>

    hello, {{ username }}

    hello, {{ username2 }}

</body>

</html>

接下来启动应用,在虚拟环境下运行python manage.py

在浏览器访问

http://localhost:5000/admin/helloworld/abc

就会看到以下的结果
这里写图片描述
可以看到我们的两个变量成功的显示在页面上,证明html模板文件渲染成功。

需要注意的,如果我们想修改默认的模板路径,可以通过jinja_loader来进行修改,例如

admin.jinja_loader = your templates dir

2、静态文件的链接构成

说完模板渲染,我们来说说静态文件的链接构成,这里需要用到一个比较重要的函数——url_for()

这个函数可以帮助我们准确的构建一条链接并且可以传递参数。

前面提到flask的静态文件保存在static中,这是flask默认的一个视图函数,因此要访问static可以通过admin.static来访问,所以路劲的构建就是

{{ url_for("static", fllename="" )}}

filename参数是我们要访问的静态文件相对于static的路径+文件名,即例如我们有一张1.jpg的图片文件在static文件夹下的image文件夹中,那么使用url_for构建链接就应该这么写:

{{ url_for("static", filename="image/1.jpg") }}

下面我们就用代码来演示

在index文件中加入一个img标签,src属性的值就是

{{ url_for("static", filename="image/1.jpg") }}

weixin/templates/index.html

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Hello World</title>

</head>

<body>

    hello, {{ username }}

    hello, {{ username2 }}

    <img src="{{ url_for('static', filename='image/1.jpg') }}">

</body>

</html>

然后我们在之前的static文件夹中创建一个image文件夹,并在其中放入一张命名为1.jpg的图片。

接下来运行应用就可以看到图片显示在页面上了。
这里写图片描述
其他的静态文件也同理,这里就不多做演示。

总结以下今天的内容,其实就是活用render_template()和url_for()两个函数和知道flask(jinja2)默认的静态文件目录和模板文件目录。内容比较简单,相信大家一定很快可以掌握。

下一次的文章讲的是flask项目结构中数据库的部分,感兴趣的朋友可以关注以下。

文章代码
链接:http://share.weiyun.com/5899090926e573fc1b2eb6ae4a696a0a (密码:hg0S)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值