• python基础-requests模块、异常处理、Django部署、内置函数、网络编程


     网络编程

     

    urllib的request模块可以非常方便地抓取URL内容,也就是发送一个GET请求到指定的页面,然后返回HTTP的响应。

     

    校验返回值,进行接口测试:

    编码:把一个Python对象编码转换成Json字符串   json.dumps()

    解码:把Json格式字符串解码转换成Python对象   json.loads()

     

    Post请求:

    urllib库里面有个urlencode函数,可以把key-value这样的键值对转换成我们想要的格式。

     

    requests模块

    urllib模块是python自带的网页模块,但是并不好用,好用的是requests模块

    requests.get(url,params=data) get请求,返回的可以是字典也可以是json串

    requests.post(url,data)post请求,返回的可以是字典也可以是json串

    requests.get/post(..cookies=)请求加cookie,注意cookie是字典,不是字符串

    requests.get/post(..headers=)请求加header

     

    requests.post(..files=)上传文件,注意excel和图片需要用‘rb’

    request.get(url) .content下载文件,二进制文件要用‘wb’

     

     

    异常处理

    程序一旦报错,就会中止运行,不够人性化,希望有问题的部分可以给出提示,没有问题的部分可以正常运行,可以用if做判断,但会导致代码不易读

    try:检查哪些代码会产生异常,后面跟except来捕获异常,如果没有捕捉到异常,程序还是会报错

    except 某类异常 as e:如果try中发生该类异常,则执行。一个try可以写多个except,用来捕捉多类异常。如果想捕捉全部异常,用except Exception as e

     

    finally:不管try中是否发生异常,都会执行

     

     

    Django部署

    安装django模块:

    打开cmd执行以下命令

    pip install django==1.9

    django-admin startproject my_django

    打开pycharm,新建一个项目

    把源代码覆盖到这个项目

    安装mysql  MySQL Server 5.7:

    打开或新建mysql路径my.ini,输入以下内容保存

    [mysqld]

    basedir=mysql路径

    datadir=mysql路径data

    port=3308

    mysql路径下打开cmd执行以下命令

    mysqld --install MYSQL_NEW --defaults-file= mysql路径my.ini

    net start MYSQL_NEW

    连接数据库,新建一个main数据库

    并执行main.sql初始化数据库表

    安装redis  Redis-x64-3.2.100:

    打开redis.windows.conf查找requirepass foobared,在下一行加requirepass 你的密码

    Redis路径下打开cmd执行以下命令

    redis-server redis.windows.conf

    启动服务:

    项目路径下打开cmd,执行以下命令

    python manage.py runserver 0.0.0.0:8000

    打开浏览器,输入地址

    FAQ

    django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' ([WinError 10061] 由于目标计算机积极拒绝,无法连接

    说明mysql服务没有启起来

    django.db.utils.InternalError: (1366, "Incorrect string value: '\xE7\x94\xA8\xE6\x88\xB7...' for column 'name' at row 1")

    sql不能在pycharm里执行,要放到navicat里执行

    Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

    说明sql模式是only_full_group_by,但是写的sql中group by前面的字段不全

    解决办法两种:第一种sql不变,在my.ini加上

    [mysqld]

    sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

    第二种把sql里group by前面的字段补全,建议用第一种

     

     

    内置函数

    zip()函数:用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表

    还可以搭配for循环使用:

    map()函数:Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。

    两个参数一个是函数名,另一个是列表或元组。

    注意:map()函数不改变原有的 list,而是返回一个新的 list。

     

    filter()函数:用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

    和map()类似,filter()也接收一个函数和一个序列。和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

     

  • 相关阅读:
    谷粒商城所学知识点整理总结
    谷粒商城项目介绍
    JVM 中的垃圾回收
    对象的创建和分配
    JVM 中的异常
    JVM 中的StringTable
    一个 java 文件的执行过程详解
    复制表的方法
    从 Vue parseHTML 来学习正则表达式
    Visual Studio 2022 预览版下载来了(x64位)
  • 原文地址:https://www.cnblogs.com/ruijie/p/9047368.html
Copyright © 2020-2023  润新知