使用Python开发你的第一个服务器程序

声明:本文是用Py3.6版本,而且从此以后我的系列文章优先使用Py3.6版本,为什么说优先使用Py3.6版本呢?因为有的时候Py3.6版本确实有些问题,那我只能用Py2.7版本!

是这样的,昨天在公众号看到有朋友用Django 构建了一个简单的Python服务器程序 用 Python 开发服务器「傻瓜式教程」,于是我当时就留言也要搞一个Flask于是就有了这篇文章. 其实Flask服务器程序我早就写过了,只是当时可能并没有多少人注意到.用Python打造属于自己的搜索引擎

闲话不说,进入正题.

打开你的Pytharm,然后新建一个项目,这里你直接选中Flask模板,一切都帮你搞定了. 我们是快速入门,所以不要折腾一些命令行以及其它虚拟环境.

然后这个项目就可以直接运行,然后你就可以看到经典的Hello world这里使用app.route来管理接口服务的路由,下面我都对一些方法进行了说明,可以看图

这里我提炼出几点

每次修改程序后,需要先停止服务,然后再重新运行服务
Flask默认的请求方式是GET
怎么接受请求的参数

这里可以直接通过后缀变量来传入数据

@app.route('/search/<keyword>')
def search(keyword):
    '''尖括号里面可以输入变量字符串'''
    return 'hello world %s' % keyword

当然也可以通过这种方式来请求,这里我是演示get请求方式,这里需要先专稿Flask中的Request模块,然后才能使用

      print('打印全部参数:%s' % request.args)
      # 获取请求字段one,two
      one = int(request.args.get('one'))
      two = int(request.args.get('two'))
怎么进入到指定的网页

需要先导入Flask中的render_templete模块,然后再使用 return render_template('index.html') 这个index.html文件在你的Templates模板文件夹中

怎么跳转到其它网页,以及如何带参数,带几个参数

return render_template('result.html', arg1=one, arg2=two, mode_word=mode_word, show=result) 这里是跳转到result.html网页中,后面是我们传入的参数,有几个参数我们就可以传入几个参数

结果

完整代码

from flask import Flask
from flask import request
from flask import render_template

app = Flask(__name__)


@app.route('/')
def hello_world():
    '''打开浏览器默认是进入这个方法'''
    # return 'Hello World!'
    return render_template('index.html')


@app.route('/index')
def index():
    '''后面追加index是进入这个方法'''
    return 'hello world index'


@app.route('/search/<keyword>')
def search(keyword):
    '''尖括号里面可以输入变量字符串'''
    return 'hello world %s' % keyword


@app.route('/plus')
def doPlus():
    return '666'


@app.route('/plus')
def doPlus2(name):
    return '777'


@app.route('/add')
def doAdd():
    print('打印全部参数:%s' % request.args)
    # request.args 就是全部参数的字典
    if 'one' not in request.args:
        return '没有请求参数one'

    if 'two' not in request.args:
        return '没有请求参数two'

    try:
        one = int(request.args.get('one'))
        two = int(request.args.get('two'))
        result = '结果是:%d' % (one + two)
        return render_template('result.html', show=result)
    except Exception as e:
        result = '错误信息:%s' % e.args
        return render_template('result.html', show=result)


@app.route('/mul')
def doMul():
    print('打印全部参数:%s' % request.args)
    # request.args 就是全部参数的字典
    if 'one' not in request.args:
        return '没有请求参数one'

    if 'two' not in request.args:
        return '没有请求参数two'

    try:
        one = int(request.args.get('one'))
        two = int(request.args.get('two'))

        result = '结果是:%d' % (one * two)
        return render_template('result.html', arg1=one, arg2=two, show=result)
    except Exception as e:
        result = '错误信息:%s' % e.args
        return render_template('result.html', show=result)


@app.route('/comp')
def doComp():
    print('打印全部参数:%s' % request.args)
    # request.args 就是全部参数的字典
    if 'one' not in request.args:
        return '没有请求参数one'

    if 'two' not in request.args:
        return '没有请求参数two'

    try:
        one = int(request.args.get('one'))
        two = int(request.args.get('two'))
        mode = request.args.get('mode')
        result = 0
        mode_word = ''
        if '+' == mode:
            result = one + two
            mode_word = '加法'
        elif '-' == mode:
            result = one + two
            mode_word = '减法'
        elif '*' == mode:
            result = one * two
            mode_word = '乘法'
        elif '/' == mode:
            result = one / two
            mode_word = '除法'
        else:
            result = '计算方式无效'
            mode_word = '计算方式无效'

        result = '结果是:%s' % str(result)
        return render_template('result.html', arg1=one, arg2=two, mode_word=mode_word, show=result)
    except Exception as e:
        result = '错误信息:%s' % e.args
        return render_template('result.html', show=result)


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

完整代码见Github: https://github.com/pythonchannel/theFlask

原文发布于微信公众号 - Python绿色通道(Future_coder)

原文发表时间:2018-04-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员互动联盟

vim带你装逼带你飞(二)

上篇我贴上了我使用的vim配置及插件配置,有这些东西只能是一个脚本堆积,无从谈高效的代码阅读开发。 下面我们就来写经常使用的命令,就从配置F系列快捷键开始吧。 ...

2966
来自专栏北京马哥教育

3000 字 Flask 快速学习指南:从入门到开发

作者:过了即是客 Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务。本文参考自Flask官方文档,...

6659
来自专栏linux驱动个人学习

设备树的interrupt

interrupts 一个计算机系统中大量设备都是通过中断请求CPU服务的,所以设备节点就需要在指定中断号。常用的属性; interrupt-controlle...

3814
来自专栏Android干货

Python IO编程

循环读取文件内容,一般读取文件内容一次读取完,内存是不够的,就要实现一次次少量数据读取

1202
来自专栏python3

python3--队列Queue,管道Pipe,进程之间的数据共享,进程池Pool,回调函数callback

既打印了主进程put的值,也打印了子进程put的值,在进程中使用队列可以完成双向通信

5291
来自专栏决胜机器学习

《Redis设计与实现》读书笔记(二十八) ——Redis集群节点结构与槽分配

《Redis设计与实现》读书笔记(二十八) ——Redis集群节点结构与槽分配 (原创内容,转载请注明来源,谢谢) 一、概述 redis集群是...

4546
来自专栏技巅

Glusterfs之rpc模块源码分析(中)之Glusterfs的rpc模块实现(1)

1863
来自专栏芋道源码1024

精尽 Dubbo 原理与源码专栏( 已经完成 69+ 篇,预计总共 75+ 篇 )

本小节,我们将 《精尽 Dubbo 源码解析》 和 《Dubbo 用户指南》 做一次映射,方便大家直接找到感兴趣的功能的具体源码实现。当然,如果有整理不到位的地...

4952
来自专栏码洞

深入Python多进程通信原理与实战——图文

继上节使用原生多进程并行运行,基于Redis作为消息队列完成了圆周率的计算,本节我们使用原生操作系统消息队列来替换Redis。

912
来自专栏闪电gogogo的专栏

Python初学——多线程Threading

接着上篇继续跟着沫凡小哥学Python啦 1.1 什么是多线程 Threading 多线程可简单理解为同时执行多个任务。 多进程和多线程都可以执行多个任务,线程...

2215

扫码关注云+社区

领取腾讯云代金券