摘要:混雜著工作室圖片網(wǎng)任務(wù)截至今天終于完成了暑假另一個(gè)任務(wù)把考核任務(wù)按照狗書再寫一遍受益匪淺,路途荊棘叢生。。。。
混雜著工作室圖片網(wǎng)任務(wù),截至今天終于完成了暑假另一個(gè)任務(wù)
把考核任務(wù)按照狗書再寫一遍
受益匪淺,路途荊棘叢生。。。。這里主要記錄了增加的功能,更多的可以看源代碼
代碼
在線預(yù)覽
Flask上傳文件
我實(shí)現(xiàn)的主要思路就是,上傳文件到服務(wù)器,然后讀取文件
當(dāng)然你可以用二進(jìn)制存進(jìn)數(shù)據(jù)庫(kù),或者用比較成熟的拓展Flask-Uploads
主要的步驟以前一篇文章寫了 如何實(shí)現(xiàn)圖片上傳API
然后你需要定義訪問(wèn)路由
@main.route("/avatar/") def get_file(filename): return send_from_directory(current_app.config["UPLOAD_FOLDER"],filename)
一開始的UPLOAD_FOLDER沒有定義清楚,加上os.getcwd()獲取當(dāng)前目錄
UPLOAD_FOLDER= os.getcwd()+"/app/upload/avatar"
如果用的Jinja2模板,在頭像引用處這樣寫就可以了
我這里把頭像地址存到了user數(shù)據(jù)模型中
if current_user.avatar: try: os.remove(os.path.join(current_app.config["UPLOAD_FOLDER"],current_user.avatar)) except OSError: return {"error": u"文件不存在"}使用forgery_py生成測(cè)試數(shù)據(jù)
開發(fā)測(cè)試的時(shí)候經(jīng)常需要大量的數(shù)據(jù),比如下面的用戶模型
shell運(yùn)行,輸入下面的代碼即可
python manage.py shell >>>User.generate_fake()
@staticmethod def generate_fake(count=100): #數(shù)量100 from sqlalchemy.exc import IntegrityError from random import seed import forgery_py #生成虛擬數(shù)據(jù)所需要的庫(kù) seed() for i in range(count): u = User(username=forgery_py.internet.user_name(True), location=forgery_py.address.city(), about_me=forgery_py.lorem_ipsum.sentence(), password=forgery_py.lorem_ipsum.word()) db.session.add(u) try: db.session.commit() except IntegrityError: db.session.rollback()用profile協(xié)助程序性能優(yōu)化
前輩博客
啟動(dòng)方式python manage.py profile
@manager.command def profile(length=25, profile_dir=None): from werkzeug.contrib.profiler import ProfilerMiddleware app.wsgi_app = ProfilerMiddleware(app.wsgi_app, restrictions=[length], profile_dir=profile_dir) app.run()定義匿名用戶
定義
from flask_login import AnonymousUserMixin class AnonymousUser(AnonymousUserMixin): def __init__(self): self.username = "游客" login_manager.anonymous_user = AnonymousUser
判斷當(dāng)前用戶是否是匿名用戶
current_user.is_anonymous() #bool型 if的時(shí)候用current_user.is_anonymous
Jinja模板中
{% if current_user.is_authenticated() %} Hi {{ current_user.name }}! {% endif %}AttributeError: "User" object has no attribute "is_active"
User需要繼承UserMixin,并添加一個(gè)user_loader
from flask_login import UserMixin class User(db.Model, UserMixin): pass @login_manager.user_loader def load_user(userid): return User.query.get(int(userid))使用markdown同步實(shí)現(xiàn)markdown
首先在create_app中初始化PageDown
forms輸入部分定義為PageDownField
from flask_pagedown import PageDown pagedown = PageDown() def create_app(config_name): app = Flask(__name__) app.config.from_object(config[config_name]) pagedown.init_app(app) ...
Jinja2中引入
{% block scripts %} {{ super() }} {{ pagedown.include_pagedown() }} {% endblock %}
模型中為了安全,防止惡意標(biāo)簽
首先,markdown() 函數(shù)初步把Markdown 文本轉(zhuǎn)換成HTML
然后,把得到的結(jié)果和允許使用的HTML 標(biāo)簽列表傳給clean() 函數(shù)
clean() 函數(shù)刪除所有不在白名單中的標(biāo)簽
轉(zhuǎn)換的最后一步由linkify() 函數(shù)完成,這個(gè)函數(shù)由Bleach 提供
把純文本中的URL 轉(zhuǎn)換成適當(dāng)?shù)逆溄?/pre>class Post(db.Modle): .... #處理富文本,將Markdown格式轉(zhuǎn)換為Html @staticmethod def on_changed_body(target, value, oldvalue, initiator): allowed_tags = ["a", "abbr", "acronym", "b", "blockquote", "code", "em", "i", "li", "ol", "pre", "strong", "ul", "h1", "h2", "h3", "p"] target.body_html = bleach.linkify(bleach.clean( markdown(value, output_format="html"), tags=allowed_tags, strip=True)) db.event.listen(Post.body, "set", Post.on_changed_body)#實(shí)時(shí)監(jiān)聽能記住的大概就這些了,其他的都是很雜的錯(cuò)誤,不管怎么說(shuō),也是次經(jīng)歷了首發(fā)于我的博客用Python+Flask實(shí)戰(zhàn)一個(gè)實(shí)用的留言板Demo
參考鏈接:bestallen的博客
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/40999.html
摘要:在本書中用到的一些服務(wù)程序主要有。本節(jié)來(lái)分別介紹它們的安裝方法。的安裝是一個(gè)輕量級(jí)的服務(wù)程序,簡(jiǎn)單易用靈活,在本書中我們主要用它來(lái)做一些服務(wù),本節(jié)我們來(lái)了解下它的安裝方式。相關(guān)鏈接官方文檔安裝執(zhí)行完畢之后即可完成安裝。 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---5、存儲(chǔ)庫(kù)的安裝:PyMySQL、PyMongo、RedisPy、RedisDump下一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)-...
摘要:開發(fā)實(shí)戰(zhàn)筆記安裝和使用虛擬環(huán)境虛擬環(huán)境是解釋器的一個(gè)私有副本,在這個(gè)環(huán)境中你可以安裝私有的包,而且不會(huì)影響系統(tǒng)中安裝的全局的解釋器。處理和函數(shù)之間關(guān)系的程序稱為路由。例如在請(qǐng)求開始時(shí),我們需要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù)連接或認(rèn)證發(fā)起請(qǐng)求的用戶。 幾天前和同事一起喝酒,大家談到為什么開始讀書這件事。這里所說(shuō)的讀書不是專業(yè)的書籍,而是一些閑書。結(jié)果發(fā)現(xiàn)原來(lái)我們開始讀書的原因很功利。都是因?yàn)樯钪杏龅搅死?..
摘要:故而總結(jié)如下編成的代碼浪漫的環(huán)境親手制作的禮物注意請(qǐng)將下面的程序員的情人節(jié)禮物換成語(yǔ)言。言歸正傳程序員的情人節(jié)禮物入門之材料構(gòu)思情人節(jié)禮物之設(shè)備展示想著在這個(gè)移動(dòng)盛行的時(shí)代,再用電腦就不太合適了。 是時(shí)候應(yīng)該反擊了 當(dāng)我看到@鄢得諼草 的那幾篇黑我黑到體無(wú)完膚的#極客愛情# @Phodal 故事的時(shí)候,我發(fā)現(xiàn)我竟無(wú)言以對(duì)?;蛟S,作為一名程序員,我們或多或少都有這樣的共性。 ...
摘要:蠎周刊年度最贊親俺們又來(lái)回顧又一個(gè)偉大的年份兒包去年最受歡迎的文章和項(xiàng)目如果你錯(cuò)過(guò)了幾期就這一期不會(huì)丟失最好的嗯哼還為你和你的準(zhǔn)備了一批紀(jì)念裇從這兒獲取任何時(shí)候如果想分享好物給大家在這兒提交喜歡我們收集的任何意見建議通過(guò)來(lái)吧原文 Title: 蠎周刊 2015 年度最贊Date: 2016-01-09 Tags: Weekly,Pycoder,Zh Slug: issue-198-to...
閱讀 2706·2021-11-11 16:54
閱讀 2329·2021-10-09 09:44
閱讀 2548·2019-08-30 15:54
閱讀 1936·2019-08-30 11:24
閱讀 1175·2019-08-29 17:03
閱讀 2107·2019-08-29 16:22
閱讀 2086·2019-08-29 13:11
閱讀 1044·2019-08-29 12:14