Flask 环境变量 FLASK_APP 说明

来源:foofish   |   更新时间: 9月前   |   分类: qa


FLASK_APP

FLASK_APP用来说明Flask实例对象 app 所在的模块位置,例如 我把 app 写在hello.py中

# hello.pyfromflaskimportFlaskapp=Flask(__name__)

# hello.py
from flask import Flask
app = Flask(__name__)
查看原文

使用f-strings调试(Python3.8)

来源:dongwm   |   更新时间: 9月前   |   分类: python3


我日常开发大概有 98% 的情况下会使用 print 来调试 (别说 pdb 之类的,根本不实用),通过在合适的位置插入 print 语句打印出要跟踪的表达式或者变量的值来确认问题。f-string 让格式化这件事变得美观简单,但是依然对调试毫无帮助。

我举个例子:

s = 'A string'
value = 123
查看原文

中奖名单|《代码里的世界观》赠书活动

来源:the5fire   |   更新时间: 9月前   |   分类: 读书


经过一周的沉淀,这次的数据看起来比较正常,从文章阅读量上就能看出来。恭喜这次中奖的读者:

{'侯国威', '青鸟'}

随机代码:

import random

readers = [
    '刘玉龙',
    'testercode',
    'RuntimeError',
    'PaperSheep',
    '独角兽男孩',
    '侯国威',
    'MrLi',
    '镇上村树',
    '朝菌',
    'DouWo',
    '(X_X)',
    'JAMI',
    '青鸟',
    'orangleliu',
]

final_readers = set()
while len(final_readers) != 2:
    final_readers.add(random.choice(readers))

print(final_readers)

查看原文

Python 工匠:一个关于模块的小故事

来源:piglei   |   更新时间: 9月前   |   分类: 


这是 “Python 工匠”系列的第 9 篇文章。[查看系列所有文章]

模块(Module)是我们用来组织 Python 代码的基本单位。很多功能强大的复杂站点,都由成百上千个独立模块共同组成。

虽然模块有着不可替代的用处,但它有时也会给我们带来麻烦。比如,当你接手一个新项目后,刚展开项目目录。第一眼就看到了攀枝错节、难以理解的模块结构,那你肯定会想:“这项目也太难搞了。”😂

查看原文

supervisor 环境变量设置

来源:foofish   |   更新时间: 9月前   |   分类: qa


项目中涉及到敏感的配置信息例如数据库密码等都可以配置在环境变量中,不跟代码一起走,以防代码哪天被泄露了导致整个系统暴露于公众之中,配置信息可以当做环境变量配置在 Supervisor 文件中,

[program:xxxx]environment=KEY=value

[program:xxxx]
environment=KEY=value
查看原文

如何用 Python 读取 Excel 文件

来源:foofish   |   更新时间: 9月前   |   分类: qa


Python 读取 Excel 需要用到第三方库xlrd, 直接用 pip 安装就可以。

pipinstallxlrd

pip install xlrd

使用 xlrd 只需要理解几个概念就可以入门了。我用一张图来说明,因为 excel 是一个电子表格,跟数据库里面的表非常象,有行、列的概念。

查看原文

先找到爱的人,再写出优秀的代码

来源:kingname   |   更新时间: 9月前   |   分类: 程序员


过去的你只会在代码里消磨每个周末,现在的你有她一起探索生活里的小惊喜;过去的你是一个死宅,现在的你想陪她拿着相机看遍世界的景色。

我曾经为某个著名的开源项目贡献过代码。这个项目的编码之规范、测试之完整、文档之清晰在我见过的开源项目中名列前茅。

它曾经是我代码编写过程中的参考标准。我的编码规范,代码风格,都是从这个项目中学到的。现在,我将会为它添砖加瓦。

我修改的部分只有十几行代码,但我前前后后修改了七八次。因为我怕我的代码增加了这个项目的熵。让这个项目变得不够完美。

查看原文

GitBook 导出 PDF 报错 ebook-convert not internal or external command 怎么解决

来源:foofish   |   更新时间: 9月前   |   分类: qa


GitBook 导出 PDF 时报错:EbookError: Error during ebook generation: 'ebook-convert' is not recognized as an internal or external command, operable program or batch file.

D:\>gitbookpdfinfo:7pluginsareinstalledinfo:6explicitlylistedinfo:loadingplugin"highlight"...OKinfo:loadingplugin"search"...OKinfo:loadingplugin"lunr"...OKinfo:loadingplugin"sharing"...OKinfo:loadingplugin"fontsettings"...OKinfo:loadingplugin"theme-default"...OKinfo:found52pagesinfo:found171assetfilesEbookError:Errorduringebookgeneration:'ebook-convert'isnotrecognizedasaninternalorexternalcommand,operableprogramorbatchfile.

D:\>gitbook pdf
info: 7 plugins are installed
info: 6 explicitly listed
info: loading plugin "highlight"... OK
info: loading plugin "search"... OK
info: loading plugin "lunr"... OK
info: loading plugin "sharing"... OK
info: loading plugin "fontsettings"... OK
info: loading plugin "theme-default"... OK
info: found 52 pages
info: found 171 asset files

EbookError: Error during ebook generation: 'ebook-convert' is not recognized as an internal or external command,
operable program or batch file.
查看原文

重写 Django Admin 的 Delete Selected 动作

来源:foofish   |   更新时间: 9月前   |   分类: qa


Django 管理后面有个删除选择项的 Action,有时我们想对它进行重写,在删除的时候做一些额外操作,例如删除model的同时,更新与之关联的对象,默认是这样的

重写后是这样的:

具体的实现方式:

@admin.register(RecommendArticle)classRecommendArticleAdmin(admin.ModelAdmin):actions=['delete_selected']defdelete_selected(self,request,obj):foroinobj.all():# 这里除了删除选择的对象之外,我还更新了其它对象Article.objects.filter(id=o.id).update(is_ad=1)o.delete()delete_selected.short_description='移除推荐列表'

@admin.register(RecommendArticle)
class RecommendArticleAdmin(admin.ModelAdmin):

    actions = ['delete_selected']

    def delete_selected(self, request, obj):
        for o in obj.all():
            # 这里除了删除选择的对象之外,我还更新了其它对象
            Article.objects.filter(id=o.id).update(is_ad=1)
            o.delete()

    delete_selected.short_description = '移除推荐列表'
查看原文

运行 SQLAlchemy 报错:Operand should contain 1 column(s) 怎么解决

来源:foofish   |   更新时间: 9月前   |   分类: qa


出现这种问题需要根据具体的sql语句来分析,在查询和插入的时候都有可能报这个错,反正就是sql没法正常插入,比如我遇到的一种情况就是有个字段本来应该是插入字符串,但是我不小心传了个list进去了,然后就报这个错了。

解决办法就是就list转换成str传进去就ok了。 具体的排错法就是将sql语句放在命令行里面执行一下,看哪里出了问题。

有问题可以扫描二维码和我交流

查看原文

Python email 正则表达式写法

来源:foofish   |   更新时间: 9月前   |   分类: qa


判断字符串是不是email电子邮件格式,可使用如下正则表达式表示:

r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)"

r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)"
查看原文

命名难,难于上青天

来源:foofish   |   更新时间: 9月前   |   分类: Python技术


Quora 问答社区的一个开发者投票统计,程序员最大的难题是:如何命名(例如:给变量,类,函数等等),光是如何命名一项的选票几乎是其它八项的投票结果的总和。如何给变量命名,如何让它变得有意义成了程序员不可逾越的难题,这篇文章参考了 Clean Code ,提供7条命名建议,希望能在取名字的过程中给你带来一些帮助。

以下都是基于Python3.7语法

变量

1、使用有意义而且可读的变量名

查看原文

Django Admin 日期字段格式化

来源:foofish   |   更新时间: 9月前   |   分类: qa


在Django Admin 面板中,对于一些model里面的时间类型的字段,不希望显示默认的时间格式,例如下图:默认是 年-月-日 时:分:秒,有些字段我只希望显示日期,不需要具体的时间,该怎么办?

分两种情况

如果只是希望某几个时间字段有新的格式,那么就可以为它单独写一个函数

list_display=(...,'simple_published_at',...)defsimple_published_at(self,obj):returnobj.published_at.strftime("%Y-%m-%d")simple_published_at.short_description="发文时间"

list_display =  (..., 'simple_published_at', ...)

 def simple_published_at(self, obj):
        return obj.published_at.strftime("%Y-%m-%d")

simple_published_at.short_description="发文时间"
查看原文

python 处理 字典转换成URL查询参数

来源:foofish   |   更新时间: 9月前   |   分类: qa


#python2 写法importurlliburllib.urlencode({'key1':'value1','key2':'value2'})#python3 写法importurllib.parseurllib.parse.urlencode({'key1':'value1','key2':'value2'})# 输出'key1=value1&key2=value2

#python2 写法
import urllib
urllib.urlencode({'key1': 'value1', 'key2': 'value2'})

#python3 写法
import urllib.parse
urllib.parse.urlencode({'key1': 'value1', 'key2': 'value2'})

# 输出
'key1=value1&key2=value2
查看原文

Python获取当前时间戳以及转换

来源:ansheng   |   更新时间: 9月前   |   分类: 


如果要在Python中获取时间戳,可以使用time、datetime模块。

获取时间戳

>>> import time
>>> ts1 = time.time()
>>> ts1
1557905910.63995
查看原文

不做翻译需求的程序员 + 赠书

来源:the5fire   |   更新时间: 9月前   |   分类: 代码思考


最近在做大量的代码 Review 的工作,尝试整理出一些大家在写代码时要避免的一些问题,同时也在读《代码整洁之道》和《代码里的世界观》。也在知识星球(同公众号名:Python程序员杂谈)中发了一些关于代码设计的内容。

绝大部分程序员在入门编程时学习的第一门课程/书籍差不多都会是《 XXX 程序设计》,但是很多人在实际写代码时却完全不做任何设计的工作,只是单纯的把产品的需求翻译为可执行的代码。对于软件开发来说,这是入门阶段,毕竟程序员的第一要务还是要把产品的需求转变为可运行的系统/软件。 这种做法就像我们刚开始学习写作文时那种流水账式的写法,能表达信息(实现功能),但是内容冗余,不易维护。

查看原文

PEP572: 海象运算符

来源:dongwm   |   更新时间: 9月前   |   分类: python3


现在已经是 Python 3.8 的最后一个 alpha 版本,接着就是本月底要发布的的 3.8.0 beta 1 了。按规定,beta 之后就不会再添加 (修改) 功能了,之前非常有争议的 PEP 572 的实现已经算是很固定了,我们这篇文章就来先尝个鲜。看看这个新的赋值表达式语法怎么用,何时用。

PEP572 的标题是「Assignment Expressions」,也就是「赋值表达式」,也叫做「命名表达式」,不过它现在被广泛的别名是「海象运算符」(The Walrus Operator)。因为:=很像海象「眼睛小,长着两枚长长的牙」这个特点 ^_^。

查看原文

Python 在函数中使用全局变量

来源:foofish   |   更新时间: 9月前   |   分类: qa


在模块中定义的变量属于全局变量,函数中定义的变量属于局部变量,两个变量即使同名也互补影响,例如:

a=10deffoo():a=2print(a)# 10

a = 10
def foo():
    a = 2

print(a) # 10
查看原文

python3判断list是否为空

来源:foofish   |   更新时间: 9月前   |   分类: qa


在Python 中,判断list 是否为空可以直接用:

names=[]ifnames:print("list不为空")else:print("list为空")

names = []
if names:
    print("list不为空")
else:
    print("list为空")
查看原文

如何在非 Web 环境运行 Flask 关联的代码

来源:foofish   |   更新时间: 9月前   |   分类: qa


有时候需要在Flask项目中运行某些代码,但是又不希望是开启Webserver,比如直接运行一个函数,这个函数可能引用了flask相关的代码,如果直接运行会报错,提示:No application found. Either work inside a view function or push。

为了解决这个问题,可以这样做,将应用上下文推入到堆栈中:

app=create_app()ctx=app.app_context()ctx.push()# 再运行你的代码....

app = create_app()
ctx = app.app_context()
ctx.push()
# 再运行你的代码
....
查看原文

本页内容使用均遵循相关开源协议,部分内容获得作者本人授权