精华内容
下载资源
问答
  • 在pycharm的设置中project ...在windows本地启动redis服务器 使用redis连接 import redis r = redis.Redis(host='127.0.0.1', port=6379, db=0, decode_responses=True) r.set("number", "201814021024") print(r.ge...

    在pycharm的设置中project interpreter中安装redis
    在windows本地启动redis服务器

    使用redis连接

    import redis
    r = redis.Redis(host='127.0.0.1', port=6379, db=0, decode_responses=True)
    r.set("number", "201814021024")
    print(r.get("number"))
    

    使用StrictRedis连接

    import redis
    r = redis.StrictRedis(host='127.0.0.1',port=6379,db=0,decode_responses=True)
    pipe = r.pipeline()  #减少对服务器的请求数  #减少服务器客户端之间连接损耗
    pipe.set('name','orange')
    pipe.execute()
    print(r.get('name'))
    
    

    使用连接池

    import redis
    pool = redis.ConnectionPool(host='127.0.0.1',port=6379,db=0, decode_responses=True)
    r = redis.Redis(connection_pool=pool)
    print(r.get("name"))
    r.hset("class","name","jack")
    u = r.hget("class","name")
    print(u)
    

    TCP server

    from socket import *
    address = '127.0.0.1'    #监听哪些网络127.0.0.1是监听本机 0.0.0.0是监听整个网络
    port = 12345
    MAX = 1024
    s = socket(AF_INET, SOCK_STREAM)
    s.bind((address,port))
    s.listen(128)
    print("listening...")
    flag = True
    while True and flag:
        client, add = s.accept()
        print('connect from:',add)
        while True:
            data = client.recv(MAX).decode('utf-8')
            if data=='exit' or not data:
                flag = False
                break
            else:
                print(data)
        client.close()
    s.close()
    
    

    TCP client

    from socket import *
    address='127.0.0.1'
    port=12345
    s=socket(AF_INET, SOCK_STREAM)
    s.connect((address,port))
    while True:
        data=input('想要发送的数据:')
        if data=='exit':
            break
        s.send(data.encode())
    s.close()
    
    

    Flask

    一个轻量级web框架

    from socket import *
    address='127.0.0.1'
    port=12345
    s=socket(AF_INET, SOCK_STREAM)
    s.connect((address,port))
    while True:
        data=input('想要发送的数据:')
        if data=='exit':
            break
        s.send(data.encode())
    s.close()
    
    

    Mysql

    
    import pymysql  #导入模块
    #1.建立连接
    conn = pymysql.connect(
        host='localhost',
        user='root',
        database='yaojun',
        password='951225',
        port=3306
    )
    print(conn) #通过打印控制台来验证连接是否成功
    cur = conn.cursor()
    sql = "select * from lesson"  #mysql数据库内的table名
    cur.execute(sql)
    user = cur.fetchone()#获取一条数据
    print(user)
    
    展开全文
  • flask框架原理

    2017-09-02 16:25:13
    描述了web服务器和flask的关系;对web服务器和flask框架的搭建给了建议;初学者可以快速对flask框架有清晰的认识!
  • 原标题:Flask框架使用我们在搭建一下接口测试平台或者管理一些脚本的时候,通常希望有一个web页面来维护,今天就介绍一款使用python编写的轻量级Web应用框架,自带开发用服务器和debugger,简单易用。Flask是依赖...

    原标题:Flask框架使用

    我们在搭建一下接口测试平台或者管理一些脚本的时候,通常希望有一个web页面来维护,今天就介绍一款使用python编写的轻量级Web应用框架,自带开发用服务器和debugger,简单易用。

    Flask是依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。

    一、必备环境

    1.python开发环境,给出一个Python 下载地址:https://www.python.org/,自行百度安装教程即可。

    2.flask安转:pip install flask

    二、入门hello world1.例子:

    test.py

    from flask import Flask

    app = Flask(__name__)

    @app.route("/user/ ")

    def user(name):

    return "hello %s !" %name

    if __name__ == '__main__':

    app.run(debug=True)

    2.运行test.py

    3.访问

    http://127.0.0.1:5000/user/sogou

    界面上多输出了一行访问记录

    三、升级版

    1.目录结构

    requestTest.py

    test.py

    templates/index.html

    templates/user.html

    2.访问过程

    3.运行结果

    4.过程分析

    以上就是MVC模型。Controller负责业务逻辑,如特定业务分发给谁处理,检查用户名、登录信息等。View负责显示逻辑,是最终输出的是用户看到的HTML,Model是用来传给View的,View在替换变量的时候,就可以从Model中取出相应的数据。以上使用了render_template模板,render_template的功能是引入.html,同时根据后面传入的参数,对html进行修改渲染。

    四.运行解释

    1.app = Flask(__name__)

    创建Flask对象app,Flask类的构造函数只有一个必须指定的参数,即程序主模块或包的名字。在大多数程序中,Python的__name__变量就是所需要的值。

    2.@app.route('/')

    web浏览器把请求发送给Web服务器,Web服务器再把请求发送给Flask程序实例。程序实例需要知道对每个URL请求运行哪些代码,所以保存了一个URL到Python函数的映射关系。处理URL和函数之间的关系的程序称为路由。在Flask程序中定义路由的最简便方式,是使用程序实例提供的app.route修饰器,把修饰的函数注册为路由。route()装饰器告诉 Flask什么样的URL 能触发我们的函数。这和Java中的注释有异曲同工之妙。修饰器是Python语言的标准特性,可以使用不同的方式修改函数的行为。惯常用法是使用修饰器把函数注册为事件的处理程序。

    3.def index():函数

    index()函数放在@app.route('/')后面,所以就是把index()函数注册为路由。如果部署程序的服务器域名为http://127.0.0.1:5000/,在浏览器中访问http://127.0.0.1:5000/后,会触发服务器执行index()函数。

    4.@app.route('/user/')

    同@app.route('/'),如果部署程序的服务器域名为http://127.0.0.1:5000/,在浏览器中访问http://127.0.0.1:5000/后,会触发服务器执行下方修饰函数。

    5.app.run(debug=True)

    程序实例用run方法启动Flask继承Web服务器。

    6.if __name__ == '__main__'

    当Python解释器,读py文件,它会执行它发现的所有代码。在执行代码之前,它会定义一些变量。例如,如果这个py文件就是主程序,它会设置__name__变量为"__main__"。如果这个py被引入到别的模块,__name__会被设置为该模块的名字。

    五、flask其他功能

    1.模板渲染

    用Python生成HTML相当繁琐,因为你必须手动对HTML做转义来保证应用的安全。为此,Flask 配备了Jinja2模板引擎。可以使用render_template()方法来渲染模板。需要做的一切就是将模板名和你想作为关键字的参数传入模板的变量。这里有一个展示如何渲染模板的简例:

    from flask import render_template

    @app.route('/hello/')

    @app.route('/hello/')

    def hello(name=None):

    return render_template('hello.html', name=name)

    Flask 会在templates文件夹里寻找模板。所以如果你的应用是个模块,这个文件夹应该与模块同级,如果它是一个包,那么这个文件夹作为包的子目录。

    2.重定向和错误

    你可以用redirect()函数把用户重定向到其它地方。放弃请求并返回错误代码,用abort()函数。默认情况下,错误代码会显示一个黑白的错误页面。如果你要定制错误页面,可以使用errorhandler()装饰器

    from flask import abort, redirect, url_for

    @app.route('/')

    def index():

    return redirect(url_for('login'))

    @app.route('/login')

    def login():

    abort(401)

    this_is_never_executed()

    @app.errorhandler(404)

    def page_not_found(error):

    return render_template('page_not_found.html'), 404

    3.日志记录

    Flask 0.3 开始,Flask就已经预置了日志系统

    app.logger.debug('A value for debugging')

    app.logger.warning('A warning occurred (%dapples)',42)

    app.logger.error('An error occurred')

    4.会话

    Session对象在不同请求间存储特定用户的信息。它是在Cookies的基础上实现的,并且对Cookies进行密钥签名。这意味着用户可以查看你Cookie的内容,但却不能修改它,除非用户知道签名的密钥。

    fromflaskimportFlask,session,redirect,url_for,escape,request

    app=Flask(__name__)

    @app.route('/')

    defindex():

    if'username'insession:

    return'Logged in as%s'%escape(session['username'])

    return'You are not logged in'

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

    deflogin():

    ifrequest.method=='POST':

    session['username']=request.form['username']

    returnredirect(url_for('index'))

    return'''

    '''

    @app.route('/logout')

    deflogout():

    # remove the username from the session if it's there

    session.pop('username',None)

    returnredirect(url_for('index'))

    # set the secret key. keep this really secret:

    app.secret_key='A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'

    Flask框架介绍就到这里了,剩下的就靠大家继续学习发挥脑洞,将这个框架用在自己平时的工作中了。返回搜狐,查看更多

    责任编辑:

    展开全文
  • Python 使用 Flask框架记录1、安装Flask​Flask依赖两个外部库,WerkzeugJinja2,Werkzeug是一个WSGI(服务器网关接口)。Jinja2时负责渲染模板。在安装Flask之前需要安装这俩个外部库,最简单的安装方式是使用...

    sss

    展开全文
  • 模仿flask框架的核心部分,写一个简易的框架和服务器,配置好之后能够实现简易的与浏览器交互(只支持post请求),实现数据库的增删改查,并响应给浏览器是没问题的,在之前的文章发过,关于flask框架的核心介绍,...

    模仿flask框架的核心部分,写一个简易的框架和服务器,配置好之后能够实现简易的与浏览器交互(只支持post请求),实现数据库的增删改查,并响应给浏览器是没问题的,在之前的文章发过,关于flask框架的核心介绍,这里只提供相应的代码,到后期还会继续优化。

    框架代码部分

    # 创建字典用来动态添加请求路径的响应信息
    dict_url = {}
    
    # 利用装饰器传参来动态添加字典路径的key、value
    def set_value(value):
        def set_fun(func):
            dict_url[value] = func
            def call_fun(*args, **kwargs):
                return func(*args, **kwargs)
    
            return call_fun
    
        return set_fun
    
    def miniOption(rep_path):
        # 响应行
        response_line = "HTTP/1.1 200 ok\r\n"
        # 响应头
        response_head = ""
        # 空行
        response_empty = "\r\n"
        # try:
        print(rep_path)
        response_body = dict_url[rep_path](rep_path)
    
        return response_line, response_head, response_empty, response_body
    #=====================================================================
    # 一下部分写请求链接
    # 格式
    @set_value("/index.html")
    def post(rep_path):
        with open('.'+rep_path, "r") as file:
            read = file.read()
        response_body = read
        return response_body
    

    服务器代码部分

    import socket
    
    import re
    
    from res_day_01.ServerHttpMiniWeb import mini_web
    
    
    class SeverHttp(object):
        def __init__(self):
            # 创建套接字
            self.tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            # 绑定本地信息
            self.tcp_socket.bind(("127.0.0.1", 8080))
            # 设为监听模式
            self.tcp_socket.listen()
    
        def start(self):
            while True:
                # 接收浏览器请求
                client, addr = self.tcp_socket.accept()
                # 处理浏览器请求
                self.option(client, addr)
                # 套接字不用关闭
    
        def option(self, client, addr):
            # 接收浏览器请求信息
            recv = client.recv(1024)
            # 判断信息是否为空
            if recv:
                recv = recv.decode("utf-8")
                search = re.search("/\S*", recv)
                # 判断匹配到的结果是否为空
                if search:
                    self.rep_path = search.group()
                    # 如果是空路径,则跳转到主页
                    if self.rep_path == "/":
                        self.rep_path = "/index.html"
                else:
                    client.close()
            else:
                client.close()
    
    
            print(self.rep_path)
            # 把请求信息分为静态资源(非html文件)和动态资源(html文件)两类,并分别处理
            if self.rep_path.endswith("html"):
                # 向框架内传入值,并接受响应的返回值
                response_line, response_head, response_empty, response_body = mini_web.miniOption(self.rep_path)
                # 响应信息
                response_info = response_line + response_head + response_empty + response_body
                # 向浏览器返回响应信息
                client.send(response_info.encode("utf-8"))
            else:
                # 响应行
                response_line = "HTTP/1.1 200 ok\r\n"
                # 响应头
                response_head = ""
                # 空行
                response_empty = "\r\n"
    
                try:
                    with open("."+self.rep_path,"rb") as file:
                        file_read = file.read()
                    response_body = file_read
                except Exception as e:
                    print(e)
                    response_line = "HTTP/1.1 404 not found\r\n"
                    response_body = "this is error page".encode("utf-8")
    
                # 响应消息
                response_info = response_line.encode("utf-8") + response_head.encode("utf-8") + response_empty.encode("utf-8") + response_body
                # 向浏览器返回响应信息
                client.send(response_info)
            # 关闭套接字
            client.close()
    
    def main():
        severhttp = SeverHttp()
        severhttp.start()
    
    
    if __name__ == '__main__':
        main()
    
    展开全文
  • 本文实例讲述了Flask框架路由视图用法。分享给大家供大家参考,具体如下: 创建一个简单flask框架程序 #1.导入Flask类 from flask import Flask #2.创建Flask对象接收一个参数__name__,它会指向程序所在的包 app...
  • 一定要在服务器的安全组规则中添加80端口,否则不会有任何输出 5、flask框架搭建网站 (1)安装pip 详细教程如: 首先检查linux有没有安装python-pip包,直接执行 yum install python-pip,显示No package python-pip...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 950
精华内容 380
关键字:

服务器和flask框架