• 同样的Python代码在PyCharm和Pydev里面的运行结果不一致


    一、问题描述:写一个基于requests的Demo,现在PyCharm下运行提示AttributeError,但是在Pydev里面运行结果通过,如下两图:


    图一:Pycharm里面的运行结果


    :Pydev里面的运行结果

    二、源代码:

    代码实现需求:

    1. 复习Flask的路由和HTTP方法的相关知识
    2. 介绍Flask如何处理请求
    3. 讲解token的概念和登录模块的思路
    4. 实现一个简易的验证登录模块
    5. 使用Requests验证

    ================================================================

    app.py


    #!/usr/bin/env python
    # -*- coding: utf-8 -*-


    import base64
    import random
    import time


    from flask import Flask, request


    app = Flask(__name__)


    users = {
        "magigo": ["123456"]
    }


    def gen_token(uid):
        token = base64.b64encode(':'.join([str(uid), str(random.random()), str(time.time() + 7200)]))
        users[uid].append(token)
        return token




    def verify_token(token):
        _token = base64.b64decode(token)
        if not users.get(_token.split(':')[0])[-1] == token:
            return -1
        if float(_token.split(':')[-1]) >= time.time():
            return 1
        else:
            return 0


    @app.route('/index', methods=['POST', 'GET'])
    def index():
        print request.headers
        return 'hello'


    @app.route('/login', methods=['POST', 'GET'])
    def login():
        uid, pw = base64.b64decode(request.headers['Authorization'].split(' ')[-1]).split(':')
        if users.get(uid)[0] == pw:
            return gen_token(uid)
        else:
            return 'error'


    @app.route('/test1', methods=['POST', 'GET'])
    def test():
        token = request.args.get('token')
        if verify_token(token) == 1:
            return 'data'



        else:
            return 'error'


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

    requsets.py


    #!/usr/bin/env python
    # -*- coding: utf-8 -*-


    import requests
    from requests import app
    r = requests.get('http://127.0.0.1:5000/login', auth=('magigo', '123456'))
    print r.text


    token ='bWFnaWdvOjAuMzE4MTUxNTA1MjQ4OjE0MjU4MzkzMjMuODk='
    r = requests.get('http://127.0.0.1:5000/test1', params={'token': token})
    print r.text

    ================================================================================

    三、解决方案

         出现这种情况的原因:没有XXX方法,一般跟编译器没有关系,而是跟引用的库有关系。

    (1)在Pycharm下查看引用的库版本:Setting-

    》Project Interpreters


    (2)在Pydev下查看引用的库版本


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Spring REST
    Spring整合CXF,发布RSETful 风格WebService
    ZT:阿里合伙人发文:十年磨一剑,自研数据库终拿世界第一
    转载:OutOfMemoryError系列(2): GC overhead limit exceeded
    SpringBoot/SpringMVC 下载本地文件
    Eclipse中查找接口实现类快捷键
    [java]察看两个日期间差多少秒/小时/天
    MongoDB(mongodb-win32-x86_64-enterprise-windows-64-4.2.1-signed.msi)下载,启动和插入数据,查询
    简繁瘦金体下载
    方正宋刻本秀楷字体下载
  • 原文地址:https://www.cnblogs.com/haixianglan/p/4609243.html
Copyright © 2020-2023  润新知