zoukankan      html  css  js  c++  java
  • flask--虚拟环境

    1、安装虚拟环境
    mosson@mosson:~$ sudo apt-get install virtualenv
    2、创建一个项目目录
    mosson@mosson:~$ mkdir myproject
    3、进入项目目录
    mosson@mosson:~$ cd myproject/
    4、利用虚拟环境创建目录
    mosson@mosson:~/myproject$ virtualenv venv
    5、开启环境
    mosson@mosson:~/myproject$ source /spider/bin/activate
    效果:
    (venv) mosson@mosson:~/myproject$

    这个带有(venv)的是一个虚拟的环境 可以在环境里安装你需要的flask的版本,其他各种的软件包,不会与根下的python包有冲突

    6、退出虚拟环境:

    (venv) mosson@mosson:deactivate

    二、简单的demo

    1、'hello world'

    .py文件

    from flask import Flask
    from flask import request
    
    app = Flask(__name__)
    
    @app.route('/')
    def hello_world():
        return 'Hello World!'
    if __name__ == '__main__':
        app.run()
    

    访问方式:

    demo2

    .py

    from flask import Flask
    from flask import request
    
    app = Flask(__name__)
    
    @app.route('/user/<name>')
    def user(name):
        return '<h1>Hello %s </h1>' % name
    
    if __name__ == '__main__':
        app.run()
    

    访问方式

    demo3:查看浏览器请求头中的 "User_Agent"信息

    from flask import Flask
    from flask import request
    
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        user_agent = request.headers.get('User-Agent')
        return '<p>Your browser is %s</p>'%user_agent
    
    if __name__ == '__main__':
        app.run()
    

    任何时候一个请求来到Flask就会激活(或者称作pushes)application context和request contexts,当请求结束再销毁它们。这意味着请求到来的时候,你可以在当前线程中获取到current_app和g,类似地reqeust和session也能被获取到。当没有激活的application context或者request context的时候,获取这些变量会报错。

    如下示例证明了application context是如何工作的:

    >>> from hello import app
    >>> from flask import current_app
    >>> current_app.name
    Traceback (most recent call last):
    ...
    RuntimeError: working outside of application context
    >>> app_ctx = app.app_context()
    >>> app_ctx.push()
    >>> current_app.name
    'hello'
    >>> app_ctx.pop()
    

    默认直接使用current_app.name是会报错的,

    直到我们调用了app的app_ctx的push或pop方法改变了current_app的值。

    注:这里把push和pop当做一个往current_app写入、推出application context的方法,而不要跟常见的数组的操作方法混淆了。

     

     3、在前端页面中访问函数

    url_for('.函数名')     提示:别忘了括号里面的点

    函数实例:

    from flask import Flask,render_template
    from flask import request
    
    app = Flask(__name__)
    
    @app.route('/services')
    def services():
        return 'Services'
    @app.route('/about')
    def about():
        return 'About'
    
    if __name__ == '__main__':
        app.run(debug=True)
    

    效果展示:

    点击 Services 或者 About 都会跳转到相应的函数里

    4 、正则匹配路由

    先定义一个正则转换器:

    from werkzeug.routing import BaseConverter
    class RegexConverter(BaseConverter):
        def __init__(self, url_map, *items):
            super(RegexConverter, self).__init__(url_map)
            self.regex = items[0]
    

    设置 正则转换器的名字  : regex

    app.url_map.converters['regex'] = RegexConverter

    在路由里写上正则:

    @app.route('/user/<regex("[a-z]{3}"):user_id>')
    def user(name):
        return '<h1>Hello %s </h1>' % name
    

    常见的 HTTP 方法:

    get:

    浏览器告知服务器:只获取页面上的信息并发给我

    这是最常用的方法

    post:

    浏览器告诉服务器:想在url上发布新信息,并且

    服务器必须确保 数据已存储且存储一次

    这是 HTML 表单通常发送数据到服务器

    put:

    类似 post 但是服务器可能触发了存储过程多次,多次覆盖旧的值

    原因:

      传输过程中连接可能会丢失

      这种情况下,浏览器的服务器之间的系统可能安全地第二次接收请求,而不破坏其他的东西

      post 只触发一次,所以 用 post 是不可能

    delete:

    删除给定位置的信息

    head 

    浏览器告诉服务器:欲获取信息,但是只关心,消息头

    应用应像 GET  请求一样来处理,但是不分发实际内容

    在 flask中 你完全无需人工干预

    底层的 Werkzeug 库已经替我们处理好了

    options

    给客户端提供一个敏捷的途径来弄清楚这个 url 支持 哪些 HTTP 方法

    从 flask 0.6 开始 实现里自动处理

    
    
    
  • 相关阅读:
    mysql的统计函数(聚合函数)
    mysql中的五子查询
    mysql-蠕虫复制--快速插入数据
    mysql 外键的使用
    我的mysql入门笔记
    阿里云官方 Centos7 源码安装 LAMP环境
    xml格式数据转excel
    mysql的安装配置
    sublime中,怎么把所有的函数代码都折叠起来?
    点击文字或按钮弹出一个DIV窗口(DIV悬浮窗口)
  • 原文地址:https://www.cnblogs.com/mosson/p/6032314.html
Copyright © 2011-2022 走看看