flask框架之页面控制(内容有点多)

使用pycharm开发工具,创建flask项目:

运行调试创建项目是否成功,看到浏览器有小火箭在飞就表示创建成功:

创建一下目录结构的html以及python文件:

html.html页面代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>这个是html页面</title>
</head>
<body>
    <div>这个是html页面</div>
    <div>用户名:{{ username }}</div>
    <div>性别:{{ gender }}</div>
    <div>年龄:{{ age }}</div><br/><br/><br/>

</body>
</html>

html2.html页面代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>这个是html页面</title>
</head>
<body>
    <div>这个是html页面</div>
    <div>用户名:{{ username }}</div>
    <div>性别:{{ gender }}</div>
    <div>年龄:{{ age }}</div><br/><br/><br/>
<div>用户名:{{ person.name }}
    <div>年龄:{{ person.age }}<br/><br/><br/>
        <div>百度:{{ websites.baidu }}
            <div>谷歌:{{ websites.google }}
                <div>百度:{{ websites['baidu'] }}
            <div>谷歌:{{ websites['google'] }}

</body>
</html>

forxh.html页面代码:

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<br>
    <h2>字典循环</h2>
    {% for k,v in user.items() %}
        <p>{{ k }}:{{ v }}</p>
    {% endfor %}
    <hr></br>
    <h2>列表循环,if判断</h2>
    {% for website in websites %}
        <o>{{ website }}</o>
        {% if website == 'baidu.com' %}
            <p>这个是百度</p>
        {% elif website == 'google.com' %}
            <p>这个是谷歌</p>
        {% endif %}
    {% endfor %}
    <hr></br>
    <h2>列表中放字典的循环</h2>
    <table>
        <thead>
            <th>书名</th>
            <th>作者</th>
            <th>价格</th>
        </thead>
        <tbody>
            {% for book in books %}
                <tr>
                    <td>{{ book.name }}</td>
                    <td>{{ book.author }}</td>
                     <td>{{ book.price }}</td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
    <hr></br>
    过滤器(名字霸气,作用鸡肋)
    </br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;avatar|default('xxx')
    </br>
    1. |default() 过滤器:变量为空,指定默认值
    </br>
    2. |length() 过滤器:列表、字符串、字典长度
</body>
</html>

beijicheng.tml页面代码:(被继承的页面)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %}被继承标题{% endblock %}</title>
    {% block head %}
    {% endblock %}
</head>
    <style>
        .native{
            background-color: black;
            color: beige;
            width: 100%;
            height: 50px;
            text-align: center;
            margin-top: 20px;
        }
    </style>
<body>
    <div class="native">模板继承</div>
    <h1>这个模板被jicheng.html页面模板继承整个模板</h1>
    {# 通过 block 标签可以在jicheng.html自定义子模板的内容 #}
    {% block main %}
    {% endblock %}
</body>
</html>

jicheng.html页面代码:(继承页面)

{% extends 'beijicheng.html' %}
{% block title%}
    已经改变标题
{% endblock %}

{% block head %}
    <style>
        .neirong{
            text-align: center;
            width: 100%;
            height: 300px;
            background-color: aqua;
            color: crimson;
            font-size: 30px
        }
    </style>
    <link>
    <script>

    </script>
{% endblock %}

{% block main %}
    <div class="neirong">子模板(jicheng.html)通过block标签与父模板(beijicheng.html)连通,可在子模板中自定义内容</div>
{% endblock %}

app.py文件冲python代码:

from flask import Flask,url_for,redirect,render_template

# 初始化一个flask对象,传一个__name__的参数
app = Flask(__name__)

# @app.route是一个装饰器
# @ 开头,在函数上面,说明是装饰器
# 这个装饰器的作用,是做一个url与视图函数的映射
@app.route('/')
def hello_world():
 #   print(url_for('my_list'))
  #  print(url_for('article',id = 'abc'))
    return '我是毛毛'

@app.route('/list/')
def my_list():
    return list

# url 传参
@app.route('/article/<id>/')
def article(id):
    return u'您请求的id是: %s'% id

# 引入重定向redirect,
@app.route('/index/')
def index():
    login_url = url_for('login')
    # 开启重定向,条状login路径,并显示其内容
    return redirect(login_url)
    return u'这是首页'
@app.route('/login/')
def login():
    return u'这是登录页面'

# 页面跳转,创建页面html.html
# 传递单个参数
@app.route('/html/')
def html():
    return render_template('html.html',username = u'毛毛',gender = u'男',age = u'28')
# 传递字典参数
@app.route('/html1/')
def html1():
    context = {
        'username': u'毛毛',
        'gender': u'男',
        'age' :u'28'
    }
    return render_template('html.html',**context)
# 对象属性参数
@app.route('/html2/')
def html2():
    class Person(object):
        name = u'小毛哥'
        age = 18
    p = Person()

    context = {
        'username': u'毛毛',
        'gender': u'男',
        'age' :u'28',
        'person':p,
        'websites':{
            'baidu':'www.baidu.com',
            'google':'www.google.com'
        }
    }
    return render_template('html2.html',**context)

# for遍历
@app.route('/forxh/')
def forxh():
    user = {
        'username': u'毛毛',
        'gender': u'男',
        'age' :u'28'
    }
    websites = ['baidu.com','google.com']
    books = [
        {
            'name':u'西游记',
            'author':u'吴承恩',
            'price':100
        },
        {
            'name': u'红楼梦',
            'author': u'曹雪芹',
            'price': 200
        },
        {
            'name': u'三个演义',
            'author': u'罗贯中',
            'price': 300
        }
    ]
    for k,v in user.items():
        print(k)
        print(v)
    return render_template('forxh.html',user = user,websites = websites,books = books)

# jicheng.html 页面没有内容,所显示内容继承于beijicehng.html
@app.route('/beijicheng/')
def beijicheng():
    return render_template('beijicheng.html')
@app.route('/jicheng/')
def jicheng():
    return render_template('jicheng.html')
# 类继承
class Person(object):
    name = '毛毛'
    age =18
class Student(Person):
    def stuty(self):
        pass

# 主函数入口
if __name__ == '__main__':
    app.run(debug=True)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值