GVKun编程网logo

如何在 Python 和 Flask 中打印字符串上方的第一个日期条目?(python打印字符串第一个字符)

1

此处将为大家介绍关于如何在Python和Flask中打印字符串上方的第一个日期条目?的详细内容,并且为您解答有关python打印字符串第一个字符的相关问题,此外,我们还将为您介绍关于16、Flask实

此处将为大家介绍关于如何在 Python 和 Flask 中打印字符串上方的第一个日期条目?的详细内容,并且为您解答有关python打印字符串第一个字符的相关问题,此外,我们还将为您介绍关于16、Flask 实战第 16 天:Flask 文件上传、Flask 中使用 Flask-SQLAlchemy 查询数据库在数据库内容更新时无法实时返回、Flask 入门 flask-script 蓝本 钩子函数 (三)、Flask 入门一( flask 框架和 flask-script 库)的有用信息。

本文目录一览:

如何在 Python 和 Flask 中打印字符串上方的第一个日期条目?(python打印字符串第一个字符)

如何在 Python 和 Flask 中打印字符串上方的第一个日期条目?(python打印字符串第一个字符)

如何解决如何在 Python 和 Flask 中打印字符串上方的第一个日期条目?

我在一个文本文件中有一个列表,如下所示:

  1. 2019-11-11 13:44:58.879616
  2. ADDED ON THURSDAY NIGHT
  3. 185.236.11.8
  4. 195.54.161.122
  5. 167.86.99.201
  6. 147.135.222.214
  7. 2019-11-12 13:44:58.879616
  8. ADDED ON FRIDAY NIGHT
  9. 185.236.11.8
  10. 195.54.161.122
  11. 167.86.99.201
  12. 147.135.222.214

列表只是添加 IP 的日期、描述和 IP 列表。此列表不断从另一个来源追加。我想使用 python 在此文本文件中搜索特定 IP(例如 167.86.99.201),然后读取第一个日期条目和上面的描述,以及使用该 IP 添加到变量的 IP 列表,以便我可以使用它在 HTML 输出中与 Flask 一起使用。

解决方法

我会做这样的事情 - 假设您的文本文件没有以任何方式编码。可以检测哪些行是日期,哪些是ip地址,并制作一个易于搜索的字典。

  1. import re
  2. from dateutil import parser
  3. ipAddress = "192.168.1.255"
  4. #first build a dictionary which you can easily search
  5. ipChk = re.compile(r''^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'')
  6. searchSet = {}
  7. for each in open("file.txt","r"):
  8. try:
  9. date = parser(each)
  10. pDate = date.strftime("%m/%d/%Y")
  11. searchSet[pDate] = []
  12. except:
  13. if ipChk.match(each):
  14. searchSet[pDate].append(each)
  15. for k,v in searchSet.items()
  16. if ipAddress in v:
  17. print("Date: %s,IP: %s" % (k,v))

如果您的文本文件非常大,您可以执行相反的操作(将您的 IP 地址作为键值并使用一组日期作为值)以便于搜索。您需要添加额外的一行,以免覆盖每个条目的 IP 字典键。

16、Flask 实战第 16 天:Flask 文件上传

16、Flask 实战第 16 天:Flask 文件上传

上传文件

这里以图片来演示 flask 如何上传文件

首先来写个简单的前端页面 upload.html, 在里面写个文件上传的表单

后端 debug 断点调试

获取到文件后,当然,我们需要把文件保存下来。在项目下新建一个目录 media 用来保存上传的文件

 

flask 还给我们提供了一个检测文件名字的函数,建议使用,提高安全性

 访问上传的文件

从服务器上读取文件,应该定义一个 url 与视图函数,来获取指定的文件。在这个视图函数中使用 send_from_directory (文件的目录,文件名) 来获取

...
from flask import send_from_directory

@app.route(''/images/<filename>/'')
def get_image(filename):
    return send_from_directory(UPLOAD_PATH, filename)

 

对上传的文件使用表单验证

比如针对上传的头像,我们只允许 jpg,png,gif 格式通过, 在 froms.py 中写一个表单认证

 

Flask 中使用 Flask-SQLAlchemy 查询数据库在数据库内容更新时无法实时返回

Flask 中使用 Flask-SQLAlchemy 查询数据库在数据库内容更新时无法实时返回

Flask 中使用 Flask-SQLAlchemy 查询数据库在数据库内容更新时无法实时返回 Flask-SQLAlchemy 版本 :2.3.2

"""python

from flask.ext.sqlalchemy import SQLAlchemy


class UnlockedAlchemy(SQLAlchemy):
    def apply_driver_hacks(self, app, info, options):
        if "isolation_level" not in options:
            options["isolation_level"] = "READ COMMITTED"
        return super(UnlockedAlchemy, self).apply_driver_hacks(app, info, options)

# db = SQLAlchemy()  # 源码中options没有isolation_level设置项, 弃用
db = UnlockedAlchemy()

"""

Flask 入门 flask-script 蓝本 钩子函数 (三)

Flask 入门 flask-script 蓝本 钩子函数 (三)

###1 flask-script 扩展库

概念: 是一个 flask 终端运行的解析器,因为项目完成以后,代码改动会有风险,所以借助终端完成不同启动项的配置

安装

pip3 install flask-script

使用

from flask_script import Manager   #导入
manager = Manager(app)  #初始化flask运行的解析器
manager.run()   #运行

执行程序需要在启动项输入命令

python3 当前启动文件名.py runserver  可选参数
可选参数如下:
-h  主机名
-p  端口号
--threaded 开启多线程
-d 开启调试模式
-r 代码修改后重新加载

例如:
python3 manage.py runserver -d -r -h127.0.0.1 -p5001 --threaded   参数全部加上

2 Blueprint 蓝图

** 概念 **: Blueprint 通过把实现不同功能的 module 分开,实现分类功能,从而把一个大的 application 分割成各自实现不同功能的 module。在一个 Blueprint 中可以调用另一个 blueprint 的 view function, 但要加相应的 blueprint 名。本质上来说就是让程序更加松耦合,更加灵活,增加复用性,提高查错效率.

导入

from flask import Blueprint,session

使用 : 创建蓝图路由文件 userinfo.py 文件

from flask import Blueprint

user = Blueprint(''user'',__name__)
@user.route(''/login'')
def login():
	return ''login''
	
注意 : 1 Blueprint接受两个参数实例化,分别文蓝本名与蓝本所在的包与模块
       2  蓝本实质上也是一个命名空间

在启动文件中注册蓝本: app/__init__.py, 一般在初始化时候注册蓝图

from mysession import user
app.register_blueprint(user)   #app注册蓝本user

app.register_blueprint(user,url_prefix=''/user'')  #在app中注册蓝本user,并添上前缀/user

下面我们以一个具体例子说明:假定一个文件系统

--app
	--main
    	__init__.py
        errors.py
        forms.py
        views.py
     __init__.py
 其中mian就是蓝本模块,错误信息保存在errors.py,视图函数保存在views.py文件中

(1) 创建蓝本:

在文件 app/main/__init__.py 添加定义:

from flask import Blueprint
main = Blueprint(''admin'',__name__)
from . import views,errors

注:1 通过实例化Blueprint类的对象创建一个蓝本
   2 视图与errors的导入应放在蓝本创建之后,防止循环导入问题

在文件 app/main/views.py 中添加视图函数:

from . import main #当前目录下导入蓝本
from flask import render_template

@main.route(''/test/'')
def test():
    return render_template(''main/test.html''),200
注: 1 跳转到模板页面test.html

在文件 app/main/errors.py 中添加错误视图函数:

from flask import render_template
from app.main import main  #导入蓝本
#捕捉404状态码
@main.app_errorhander(404)
def page_not_found(e):
    return render_tamplate(''main/404.html''),404
#捕捉500状态码
@main.app_errorhander(500)
def internal_server_error(e):
    return render_template(''main/500.html''),500

(2) 注册蓝本

app/__init__.py 中添加注册蓝本代码

from app.main import main   #导入蓝本
app.register_blueprint(main,url_prefix=''/admin'')

(3) 构造 url 路由

view视图中有函数test
url_for(''main.test'')   url_for(''蓝本名.视图函数名'')

3 钩子函数

类似于 django 中间件 在使用的时候需要使用装饰器,使得 程序变成 A函数--->钩子函数---->B函数 ,

flask 项目中有个是应用上下文 (app), 一个是请求上下文 (request), 请求上下文 request 和应用上下文 current_app 都是一个全局变量。所有请求都共享的。Flask 有特殊的机制可以保证每次请求的数据都是隔离的,即 A 请求所产生的数据不会影响到 B 请求。所以可以直接导入 request 对象,不会受到外界影响

两个上下文一般包含 4 个属性:

  1. request : 请求上下文的对象,一般用来保存一些请求的变量。比如 method、args、form 等。
  2. session: 请求上下文的对象,一般用来保存一些会话信息.
  3. current_app: 返回当前 App
  4. g: 全局变量,应用上下文的对象,处理请求时作为临时存储的对象 : g.message 存储信息
钩子函数 功能描述
before_first_request 第一次请求之前
before_request 每次请求之前
after_request 每次请求之后
teardown_request 不管是否异常都会在请求之后执行
context_processor 上下文处理器,返回字典的健
errorhandler errorhandler 接收状态码,可以自定义返回状态码的响应页面

注:在蓝本中使用钩子函数需要进行转化: @mysession.teardown_app_request 蓝本名.teardown_app_request

4 g 对象

g : 全局变量,需要导入使用 from flask import g

  1. g 对象专门用来保存用户数据的
  2. g 对象在一次请求中所有代码都是公用的

例如:在提交表单中测试下 action=''{{ url_for(''login'') }}'' method=''post''

login_user.html

<form action="{{ url_for(''login'') }}" method="post">
       <table>
                    <tr>
                       <td>用户名:</td>
                       <td><input type="text" placeholder="请输入用户名" name="username"></td>
                    </tr>
                    <tr>
                        <td>密码:</td>
                        <td><input type="text" placeholder="请输入密码" name="password"></td>
                    </tr>
                    <tr>
                        <td></td>
                        <td><input type="submit" value="登录"></td>
                    </tr>
       </table>
</form>

视图函数 utils.py 中

from flask import g
def login_username():
	return u''当前登录用户:{}''.format(g.username)

def login_password():
    return u''当前密码:{}''.format(g.password)

在主文件视图函数中 views.py

from flask import Flask,g,request,render_template
from utils import login_username

app = Flask(__name__)

@app.route(''/login/'',methods=[''GET'', ''POST''])
def login():
    if request.method == ''GET'':
        return render_template(''login.html'')
    else:
        username = request.form.get(''username'')
        password = request.form.get(''password'')
        g.username = username   #将username变成全局g对象信息存储
        g.password = password	#将password变成全局g对象信息存储
        login_username()
        login_password()
        return u''登录成功!''

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

Flask 入门一( flask 框架和 flask-script 库)

Flask 入门一( flask 框架和 flask-script 库)


       

    今天小婷儿给大家分享的是Flask 入门一( flask 框架和 flask-script 库)。


Flask 入门一( flask 框架和 flask-script 库)          



Flask 入门一( flask 框架 和 flask-script 库)

 

一、Flask框架:

 

1、简介

Flask是一个非常小的Python Web框架,被称为微型框架;只提供了一个稳健的核心,其他功能全部是通过扩展实现的;意思就是我们可以根据项目的需要量身定制,也意味着我们需要学习各种扩展库的使用。

2、组成

1)Wsgi系统、调试、路由

2)模板引擎(Jinja2,是Flask核心开发者人员开发的)

3)安装:pip install flask

4)视图函数使用说明

a: 路由末尾的'/'建议都加上,防止手误多敲路由末尾'/'引起的路由错误;

b: 若需要指定参数,参数写在<>中,视图函数中需要对应的同名的参数;

c: 若需要指定参数类型,如:int/float/path,类型写在参数之前,使用 ':' 与参数分割;

d: 若不指定参数类型,参数默认是str类型,path其实也是str类型,只是'/'作为普通字符处理而已;

5)完整代码:

from flask import Flask

app = Flask(__name__)

@app.route('/')

def index():

    return 'Hello Flask !'

if __name__ == '__main__':

    app.run()

5) 终端启动:

app.run(debug=True, threaded=True, host='0.0.0.0', port=5050)

6)启动参数说明

Debug:是否开启调试模式,默认为False;开启后有调试信息,会自动加载文件;

Threaded:是否开启多线程,默认是关闭的;

Host:默认为127.0.0.1,设置为'0.0.0.0'之后可以通过IP进行访问,设置端口,默认为5000

 

二、flask-script库

1、简介

简单来说,就是一个flask终端启动参数解析工具;这样我们就可以不更改代码完成不同方式的启动。

2、使用

1)导入类库:from flask_script import Manager

2)创建对象:manager = Manager(app)

3)启动代码:if __name__ == '__main__':
             manager.run()

4)终端启动:python manage.py runserver -d -r -h 0.0.0.0 -p 5000

3、启动参数说明

1)-h, --host    指定主机

2)-p, --port    指定端口

3)-d         开启调试模式

4)-r        代码修改后自动加载

5)-?, --help    查看帮助信息

 


关于如何在 Python 和 Flask 中打印字符串上方的第一个日期条目?python打印字符串第一个字符的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于16、Flask 实战第 16 天:Flask 文件上传、Flask 中使用 Flask-SQLAlchemy 查询数据库在数据库内容更新时无法实时返回、Flask 入门 flask-script 蓝本 钩子函数 (三)、Flask 入门一( flask 框架和 flask-script 库)的相关信息,请在本站寻找。

本文标签: