美文网首页
flask框架实战3-开发简单网页

flask框架实战3-开发简单网页

作者: C1R2 | 来源:发表于2023-02-27 15:03 被阅读0次

1、开发简单网页多个页面

使用flask框架实现了一个网页的开发,还可以传输数据。但网站肯定是由多个网页构成的,多个网页之间还要实现相互链接访问。下面我们在上述基础上增加两个网页,来说明多网页开发和链接的方法。

首先在main.py文件增加多个网页的路由和调用函数:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    msg = "my name is cr!"
    return render_template("index.html", data=msg)

@app.route('/news')  # 增加一个news页面
def newspage():
    newsContent = "全国上下一心支持武汉,武汉加油!"
    return render_template("news.html", data=newsContent)

@app.route('/product')  # 增加一个product页面
def productpage():
    return render_template("product.html")

if __name__ == "__main__":
    app.run(port=2023, host="127.0.0.1", debug=True)

根据路由设定,在templates文件夹下新增两个网页文件,news.html和project.html。

news.html如下

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>news</title>
</head>
<body>
<p>今日新闻</p>
<p>2020年1月28日0-24时,浙江省报告新型冠状病毒感染的肺炎新增确诊病例123例,新增重症病例11例,新增出院病例2例。</p>
<hr>
<p style="color:red">{{data}}</p>
</body>
</html>

那如何实现网页之间的链接呢?

比如访问新闻页面后想返回首页或者访问project页。我们知道使用a超链接可以实现,不过在a超链接的href属性里如何构建这种路由呢?

有两种解决思路,一个是使用url_for函数,一个是使用路径方式。
我们来实现一下,在news.html中加入两个超链接代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>news</title>
</head>
<body>
<p>今日新闻</p>
<p>2020年1月28日0-24时,浙江省报告新型冠状病毒感染的肺炎新增确诊病例123例,新增重症病例11例,新增出院病例2例。</p>
<hr>
<p style="color:red">{{data}}</p>
<p><a href="/ ">回到首页</a></p>   #回首页超链接
<p> <a href="{{ url_for('productpage') }}">去看产品页</a></p>   #产品页链接
</body>
</html>

代码中url_for函数给定参数是路由页面的函数名,如本例中的产品页,main.py函数中路由为/product,但函数名为productpage,这里a超链接需要给定函数名即projectpage,<a href="{{ url_for('productpage') }} " 。
回首页超链接直接给/即可,<a href="/">。也可以直接使用路径方式,如/product,就是寻找main.py文件的product路由名,这也是指向了productpage函数。

同样我们在首页加入导航代码 , index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>welcome to 2020</title>
</head>
<body>
   welcome to my webpage
<ul>
    <li><a href="/news">查看新闻</a></li>
    <li><a href="/product">查看产品</a></li>
</ul>
  <hr>
   <p>这是采用render_template模板方法获得的内容:</p>
   <br>
  {{data}}
</body>
</html>
image.png

点击超链接就可以顺利访问其他页面。这样就形成了网页之间的互动。

如果想在超链接跳转时携带参数,即使得url变成:http://ip/page1?var=value,这种方式,就需要在服务器文件中稍加修改。例如在上述首页中查看产品超链接中加入参数传递,先将超链接修改为:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>welcome to 2020</title>
</head>
<body>
   welcome to my webpage
<ul>
    <li><a href="/news">查看新闻</a></li>
    <li><a href="{{ url_for('productpage',a=50) }}">查看产品</a></li>  #注意超链接带参数a传递
</ul>
  <hr>
   <p>这是采用render_template模板方法获得的内容:</p>
   <br>
  {{data}}
</body>
</html>

因为要跳转到product装饰器位置,就需要将其修改一下如下:

@app.route('/product/<a>',methods=['GET'])
def productpage(a):
   return render_template("product.html",data=a)

此时在product.html中增加一行读取这个data的值:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>product</title>
</head>
<body>
传递过来的值为{{data}}
<p>库克表示,他不会就5G方面的未来苹果产品发表评论,但表示5G处于“在全球范围内进行部署的早期阶段”。苹果对其现有的iPhone产品线“感到骄傲”</p>
</body>
</html>

--参考
https://zhuanlan.zhihu.com/p/104273184

相关文章

网友评论

      本文标题:flask框架实战3-开发简单网页

      本文链接:https://www.haomeiwen.com/subject/ckwhldtx.html