bottle中文文档

bottle文档
bottle文档1
Jinja2 模板用法

1.基本框架

debug : 显示错误
reloader:代码更新后自动加载新代码

from bottle import route, run, jinja2_template
@route('/')
def index():
    return jinja2_template('templates/index.html')
run(server='tornado', host='127.0.0.1', port='8082', reloader=True)
from bottle import Bottle, run, route

web = Bottle()
@web.route('/')
def index():
    return 'I am bottle!'
run(web)	# 默认端口为8080

2.URL装饰器

@route('/')
@route('/', method=['GET', 'POST'])

if request.method == 'POST':
	return '这是一个post请求'

动态路由基础:将请求参数放入URL路径中

直接获取字符串参数:

URL形式1:/user/
URL形式2:/user//
访问URL: /user/tom

http://127.0.0.1/index/tom
@route('/index/<name>')
def index(name):
    print(name)
    return 'I am bottle!'
run(host='127.0.0.1', port=80, debug=True, reloader=True)

3. 返回静态文件

在这里插入图片描述

强制下载:download=True
重命名下载:download=‘6.txt’

http://127.0.0.1/index/root.txt

@route('/index/<filename>')
def index(filename):
    print(filename)
    return static_file(filename, root='', download='6.txt')
run(host='127.0.0.1', port=80, debug=True, reloader=True)

4. URL转向

from bottle import run, route, error, abort, redirect
@route('/zhuanxiang')
def index():
    return redirect('/')

@route('/about')
def index():
    abort(404, 'err 404')   # 转向404页面

5. 404 错误页面

from bottle import run, route, error
@error(404)
def err(err):
    return '亲,您要的页面丢失了!!!'

6. 获取GET、POST请求的参数

(1)GET 参数提供方法

在URL 链接最后添加“?名称=值&名称=值…”,可手工输入提供、也可通过超链接提供或表单形式。
例如:http://127.0.0.1/?key=520&username=1314&sign=666

2.获取提交的参数

提交数据查看 jquery 提交数据 ajax

nickname = request.POST.getunicode('money')
print(money)

3.返回json格式

return json.dumps({'data': 403})

登录

@route('/login', method=['GET','POST'])
def login(db):
    if request.method == 'GET':
        if request.get_cookie('SchoolShop'):
            userinfo = request.get_cookie('SchoolShop', secret='safe')
            info = json.loads(userinfo)
            uname = info['username']
            psd = info['password']

            return redirect('/my')

    if request.method == 'POST':
        username = request.POST.getunicode('username')
        psd = request.POST.getunicode('password')
        print('{}  {}',format(username, psd))

        if (username == '' and psd == ''):
            return json.dumps({'data': 401})  # 请求需要对用户身份进行认证

        # 从数据库 查询username的密码
        dbuser_psd = db.query(Users).filter_by(username=username).first().password
        print("账号为:" + username)
        print("db密码为:" + dbuser_psd + "  输入密码:" + psd)

        # 判断密码是否正确
        if dbuser_psd == psd:
            try:
                # 查询用户昵称
                nickname = db.query(Users).filter_by(username=username).first().nickname
                print("用户昵称:" + nickname)
                session_val = json.dumps({'username': username, 'password': psd}).encode('utf-8')
                # 返回cookie
                response.set_cookie("SchoolShop", session_val, secret='safe', max_age=80000)
                # 返回登录成功
                return json.dumps({'data': 200})
            except:
                return json.dumps({'data': 403})
        else:
            # 账号或密码错误
            return json.dumps({'data': 403})
    return jinja2_template('templates/login.html')

验证是否登录 使用cookie

@route('/addressAdd', method=['GET','POST'])
def addressAdd(db):
    is_login = 0
    uname = ''
    try:
        if request.get_cookie('SchoolShop'):
            userinfo = request.get_cookie('SchoolShop', secret='safe')
            info = json.loads(userinfo)
            uname = info['username']
            psd = info['password']
            try:
                # username = db.query(Users).filter_by(username=uname).first().username
                password = db.query(Users).filter_by(username=uname).first().password
                if (password == psd):
                    is_login = 1
                else:
                    # print('cookie失效')
                    return redirect('/')
            except:
                # print('数据库查询错误')
                return redirect('/')
        else:
            return redirect('/login')
        if (is_login == 1):
            if request.method == 'GET':
                return jinja2_template('templates/addressAdd.html')

            # 提交用户新增的地址
            if request.method == 'POST':
                receiver = request.POST.getunicode('receiver')
                phone = request.POST.getunicode('phone')
                print('{} {} {}'.format(receiver, phone, pos))
    except:
        return redirect('/login')
    return redirect('/')
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有勇气的牛排

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值