摘要:混雜著工作室圖片網任務截至今天終于完成了暑假另一個任務把考核任務按照狗書再寫一遍受益匪淺,路途荊棘叢生。。。。
混雜著工作室圖片網任務,截至今天終于完成了暑假另一個任務
把考核任務按照狗書再寫一遍
受益匪淺,路途荊棘叢生。。。。這里主要記錄了增加的功能,更多的可以看源代碼
代碼
在線預覽
Flask上傳文件
我實現的主要思路就是,上傳文件到服務器,然后讀取文件
當然你可以用二進制存進數據庫,或者用比較成熟的拓展Flask-Uploads
主要的步驟以前一篇文章寫了 如何實現圖片上傳API
然后你需要定義訪問路由
@main.route("/avatar/") def get_file(filename): return send_from_directory(current_app.config["UPLOAD_FOLDER"],filename)
一開始的UPLOAD_FOLDER沒有定義清楚,加上os.getcwd()獲取當前目錄
UPLOAD_FOLDER= os.getcwd()+"/app/upload/avatar"
如果用的Jinja2模板,在頭像引用處這樣寫就可以了
我這里把頭像地址存到了user數據模型中
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生成測試數據
開發測試的時候經常需要大量的數據,比如下面的用戶模型
shell運行,輸入下面的代碼即可
python manage.py shell >>>User.generate_fake()
@staticmethod def generate_fake(count=100): #數量100 from sqlalchemy.exc import IntegrityError from random import seed import forgery_py #生成虛擬數據所需要的庫 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協助程序性能優化
前輩博客
啟動方式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
判斷當前用戶是否是匿名用戶
current_user.is_anonymous() #bool型 if的時候用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,并添加一個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同步實現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 %}
模型中為了安全,防止惡意標簽
首先,markdown() 函數初步把Markdown 文本轉換成HTML
然后,把得到的結果和允許使用的HTML 標簽列表傳給clean() 函數
clean() 函數刪除所有不在白名單中的標簽
轉換的最后一步由linkify() 函數完成,這個函數由Bleach 提供
把純文本中的URL 轉換成適當的鏈接
class Post(db.Modle): .... #處理富文本,將Markdown格式轉換為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)#實時監聽
能記住的大概就這些了,其他的都是很雜的錯誤,不管怎么說,也是次經歷了
首發于我的博客用Python+Flask實戰一個實用的留言板Demo
參考鏈接:bestallen的博客
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/40999.html
摘要:在本書中用到的一些服務程序主要有。本節來分別介紹它們的安裝方法。的安裝是一個輕量級的服務程序,簡單易用靈活,在本書中我們主要用它來做一些服務,本節我們來了解下它的安裝方式。相關鏈接官方文檔安裝執行完畢之后即可完成安裝。 上一篇文章:Python3網絡爬蟲實戰---5、存儲庫的安裝:PyMySQL、PyMongo、RedisPy、RedisDump下一篇文章:Python3網絡爬蟲實戰-...
摘要:開發實戰筆記安裝和使用虛擬環境虛擬環境是解釋器的一個私有副本,在這個環境中你可以安裝私有的包,而且不會影響系統中安裝的全局的解釋器。處理和函數之間關系的程序稱為路由。例如在請求開始時,我們需要創建數據庫連接或認證發起請求的用戶。 幾天前和同事一起喝酒,大家談到為什么開始讀書這件事。這里所說的讀書不是專業的書籍,而是一些閑書。結果發現原來我們開始讀書的原因很功利。都是因為生活中遇到了困...
摘要:故而總結如下編成的代碼浪漫的環境親手制作的禮物注意請將下面的程序員的情人節禮物換成語言。言歸正傳程序員的情人節禮物入門之材料構思情人節禮物之設備展示想著在這個移動盛行的時代,再用電腦就不太合適了。 是時候應該反擊了 當我看到@鄢得諼草 的那幾篇黑我黑到體無完膚的#極客愛情# @Phodal 故事的時候,我發現我竟無言以對。或許,作為一名程序員,我們或多或少都有這樣的共性。 ...
摘要:蠎周刊年度最贊親俺們又來回顧又一個偉大的年份兒包去年最受歡迎的文章和項目如果你錯過了幾期就這一期不會丟失最好的嗯哼還為你和你的準備了一批紀念裇從這兒獲取任何時候如果想分享好物給大家在這兒提交喜歡我們收集的任何意見建議通過來吧原文 Title: 蠎周刊 2015 年度最贊Date: 2016-01-09 Tags: Weekly,Pycoder,Zh Slug: issue-198-to...
閱讀 2719·2021-11-11 16:54
閱讀 2342·2021-10-09 09:44
閱讀 2567·2019-08-30 15:54
閱讀 1946·2019-08-30 11:24
閱讀 1188·2019-08-29 17:03
閱讀 2115·2019-08-29 16:22
閱讀 2096·2019-08-29 13:11
閱讀 1056·2019-08-29 12:14