cookie小案例,

如果取到cookie里面自己赋的值,说明登录了,显示登录字样,否则就直接跳转到登录界面

后端的代码

from flask import Flask,render_template,request,redirect,url_for
from werkzeug.utils import secure_filename
import os

app = Flask(__name__)

@app.route('/')
def index():
    #重新给islogin赋值判断
    # islogin = request.cookies.get('islogin')
    # #判断cookie里面携带的值
    # ctx = {}
    # if islogin:
    #     ctx['islogin'] = 1
    # else:
    #     ctx['islogin'] = 0
    # return render_template('08index.html',**ctx)
    # # 把上下文传到index页面
    #这个是在前端判断,最下面有前端的判断代码


    #直接根据islogin的值判断,在后端直接判断
    islogin = request.cookies.get('islogin')
    if islogin == '1':
        return '登录了'
    else:
        return redirect(url_for('login'))




@app.route('/login',methods = ['GET','POST'])
def login():

    if request.method == 'GET':
        return render_template('08login.html')
    else:
        name = request.form.get('name')
        pwd = request.form.get('pwd')
        file = request.form.get('file')
        if name == '1803572105' and pwd == '123456':
            response =  redirect(url_for('index'))
            #如果是重定向到后端的视图的话,就用rediect,如果是加载前端的数据的话,就用render_template
            #返回这个响应的时候,塞一个cookie,作为登录的标志,可以根据这个标志判断是否登录过
            response.set_cookie('islogin','1')
            upload(file)#调用函数
            return response
        else:
            return '错误'


#判断图片


#告诉后端程序,图片应该保存到哪里呢?
UPLOAD_FOLDER = 'media'
#folder是文件的意思,告诉程序,这个函数的文件路径
#UPLOAD_FOLDER这个可以自定义。只要下面点save的时候传进去就行


#为了防止用户乱上传,我们需要规定上传的类型
#这块是自定义的
ALLOW = ['txt','pdf','png','jpg','jpeg','gif']

#定义一个函数,设置一个参数
def allow_file(filename):
    return '.' in filename and filename.rsplit('.',1)[1] in ALLOW
    #表示点在这个参数里面,然后以点反向分割,分割一次,取下标为1的值(也就是第二个值)
    #取到之后再判断是否在allow里面
    #把结果返回给调用这个函数的地方



def upload(file):
        if file:
            #在这个地方判断一下用户上传的图片类型是否在allow里面
            #先判断有没有这个文件,在判断是否合法
            name = file.filename#取到文件的名字,赋值给name
            if not allow_file(name):#调用函数
            #把文件名字传给这个参数,
                return redirect(request.url)
            #表示如果为flase的话,也就是文件名字不合法,就哪来的回哪去
            #第一层校验成功,第二层校验一下是不是和配置文件的后缀名重复
            name1 = secure_filename(name)
            #有了这个之后,他会把路径改掉,不会让这个文件巧合的覆盖原来的配置文件
            #但是这个文件有个缺点,不支持中文

            #否则的话,就走下面的程序

            file.save(os.path.join(UPLOAD_FOLDER,name1))#把图片保存在你写的路径里面
            #如果文件存在的话,就存起来,
            #file.filename获取图片的文件名字,可以做判断,
            #也可以在上传的时候,是给文件取名字。





if __name__ == '__main__':
    app.run(debug=True)

前端的代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>


<form action="/login" method="post" enctype="multipart/form-data">
    <div>账号:<input type="text" name="name"></div>
    <div>密码:<input type="password" name="pwd"></div>
    <div>
        头像:<input type="file" name="file">
{#        name里面的值是为了方便后端取数据#}

    </div>
    <div><input type="submit" value="提交"></div>
</form>

</body>
</html>

前端的判断代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

{% if islogin == 1 %}
    <h1>登录le</h1>
{% else %}
    <h1>请登录</h1>
{% endif %}

</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值