设为首页 收藏本站
查看: 1296|回复: 0

[经验分享] 我的python学习--第五天

[复制链接]

尚未签到

发表于 2018-8-8 13:24:24 | 显示全部楼层 |阅读模式
  一、函数的定义:
  def 函数名(name,age=20,*params):
  函数体
  return 返回值
  示例:
def hello():  
    print 'hello world'               # print表示要表达的一段话
  
    return 'hello'                    # return表示函数的返回值
  

  
def dosth(fn):
  
    print fn+' everyone'              # 函数中还可以调用函数
  

  
hello()
  
dosth(hello())
  

  
[root@test1 python]# python hello.py
  
hello world
  
hello world
  
hello everyone
  二、模块
  简单的理解,模块就是文件,我们可以使用import,把其他文件的内容引入,进行使用
  模块整体分为三种:
  1、python自带的模块,比如sys、math、random、os、time等
  2、第三方的开发者开发的模块,可以通过pip install安装,然后用import导入,比如flask requests,pyquery,psutil等
  3、自己开发的模块
  import的模块查找路径:
  1、当前目录
  2、pythonpath全局路径
  注:自己创建的文件名不要与模块名相同,不然导入时,导入的将是创建的文件而不是模块
  三、Flask
  Flask是一个使用Python编写的轻量级Web应用框架。其WSGI工具箱采用Werkzeug,模板引擎则使用Jinja2。
  1、安装flask框架
[root@test1 python]# yum install -y python-pip  
[root@test1 python]# pip install flask
  2、写一个hello world
#!/usr/bin/python  
#coding:utf-8
  

  
from flask import Flask                          # 引入flask的启动模块
  
app = Flask(__name__)                            # 创建一个app
  

  
@app.route('/')                                  # 监听路由,即url
  
def index():                                     # 路由对应的处理函数
  
    return 'hello world!'
  

  
if __name__=='__main__':
  
    app.run(host='0.0.0.0',port='8888')          # 启动app,监听在8888端口
  运行结果
DSC0000.png

  3、使用request
  request里面包含一次网络请求所有的内容,所有get的url参数都在request.args这个变量里,request.args是一个类似字典的数据,flask通过request.args.get获取前端url给的参数
#!/usr/bin/python  
#coding:utf-8
  

  
from flask import Flask,request
  
app = Flask(__name__)
  

  
@app.route('/')
  
def index():
  
    return 'hello world!'
  

  
@app.route('/hello')
  
def hello():
  
    name = request.args.get('name','world')            # 获取请求的参数
  
    return 'hello %s'%name
  

  
if __name__=='__main__':
  
    app.run(host='0.0.0.0',port='8888')
  在url中通过name=Alice传入参数
DSC0001.png

  4、使用模板
#!/usr/bin/python  
#coding:utf-8
  

  
from flask import Flask,request,render_template
  
app = Flask(__name__)
  

  
@app.route('/')
  
def index():
  
    return 'hello world!'
  

  
@app.route('/hello')
  
def hello():
  
    name = request.args.get('name','world')                 # 获取参数
  
    return render_template('hello.html',name=name)          # 将参数传入模板
  
#    return 'hello %s'%name
  

  
if __name__=='__main__':
  
    app.run(host='0.0.0.0',port='8888')
  模板文件hello.html
Hello,my name is `name`  运行结果
DSC0002.png

  当使用模板时,render_template会自动到当前目录下的templates目录下去查找请求的html文件,并将参数替换
  flask使用的是jinja2模板语言:
  ``.``.``.``包裹的表示变量
  {%...%}包裹的是python的语句
  循环语法:
  {% for x in arr%}
  ...
  {%endfor%}
  循环结束,if同理
  5、redirect跳转
#!/usr/bin/python  
#coding:utf-8
  

  
from flask import Flask,request,render_template,redirect
  
app = Flask(__name__)
  

  
@app.route('/')
  
def index():
  
    name = request.args.get('name')
  
    pwd = request.args.get('password')
  
    if name=='admin' and pwd=='admin':               # 用户名密码为admin,就跳转
  
        return redirect('/admin')
  
    else:
  
        return 'hello %s'%name
  

  

  
@app.route('/admin')
  
def hello():
  
    with open('user.txt',) as fo:
  
        names = [names.split(':') for names in fo.read().split('\n')] # 显示已有的账户密码
  
    return render_template('user.html',names=names)
  

  
if __name__=='__main__':
  
    app.run(host='0.0.0.0',port='8888')
  user.html文件
<table border='1'>  
    <thead>
  
        <tr>
  
            <td> Name </td>
  
            <td> Password </td>
  
        </tr>
  
    </thead>
  
    <tbody>
  
        {% for name in names %}
  
        {% if name[0] and name[1] %}
  
        <tr>
  
            <td>{{name[0]}}</td>
  
            <td>{{name[1]}}</td>
  
        </tr>
  
        {%endif%}
  
        {%endfor%}
  
    </tbody>
  
</table>
  显示结果:
  非admin用户
DSC0003.png

  admin用户和密码
DSC0004.png

  跳转后
DSC0005.png

  6、在5的基础上将添加用户功能进行美化
#!/usr/bin/python  
#coding:utf-8
  

  
from flask import Flask,request,render_template,redirect
  
app = Flask(__name__)
  

  
@app.route('/')
  
def index():
  
    return 'hello world'
  

  
@app.route('/useradd')
  
def useradd():
  
    name = request.args.get('name')
  
    pwd = request.args.get('password')
  
    if name and pwd:
  
        with open('user.txt','a+') as fo:
  
            fo.write('%s:%s\n'%(name,pwd))
  
        return redirect('/admin')
  
    else:
  
        return 'need user and password'
  

  
@app.route('/admin')
  
def hello():
  
    with open('user.txt',) as fo:
  
        names = [names.split(':') for names in fo.read().split('\n')]
  

  
    return render_template('user.html',names=names)
  

  
if __name__=='__main__':
  
    app.run(host='0.0.0.0',port='8888')
  user.html代码为:
<form action='/useradd'>  
    name:<input type='text' name='name'>
  
    password:<input type='text' name='password'>
  
    <input type='submit' value='add'>
  
</form>
  

  
<table border='1'>
  
    <thead>
  
        <tr>
  
            <td> Name </td>
  
            <td> Password </td>
  
        </tr>
  
    </thead>
  
    <tbody>
  
        {% for name in names %}
  
        {% if name[0] and name[1] %}
  
        <tr>
  
            <td>{{name[0]}}</td>
  
            <td>{{name[1]}}</td>
  
        </tr>
  
        {%endif%}
  
        {%endfor%}
  
    </tbody>
  
</table>
  运行结果:
DSC0006.png

DSC0007.png

DSC0008.png

  7、html常见标签
  table:后端向前端展示数据
  form:前段向后端提交数据
  action:提交的地址(url)
  input:输入框
  type:输入类型
  text:文本
  submit:提交按钮
  value:按钮上的文字
  password:密码已点或星显示
  checkbox:多选框
  radio:单选框
  name:字段名
  8、其他常见标签:
  p:一段话
  br:换行
  hr:一个横线
  a herf="":锚点(超链接)
  img:图片标签
  widh:宽度

  >

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-548720-1-1.html 上篇帖子: python实现图形界面执行linux命令 下篇帖子: Python中的特殊变量名
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表