iT邦幫忙

DAY 1
0

Play with Flask And MongoDB系列 第 1

Day 1 - 目標與Flask-WTF淺談

  • 分享至 

  • xImage
  •  

在台灣接觸似乎使用Python 架設網站都會以Django為首選,

但是因為我是一開始學習Flask開始的,

所以一直到現在我用Python 開發網站還是會選擇Flask,

因為他輕(他只有包含了兩個lib ,jinja2 and uwsgi),

不管在連結資料庫(MongoDB, MySQL.....)都有相對應的軟體套件,

而且我也喜歡Python 的寫作風格,

少了大括號不單是減少了許多行數,

強制縮排更是會讓程式碼更容易閱讀。

Flask的基本使用部份我應該就沒有在這次的鐵人賽中紀錄了,

若有需要請洽官方網站

而DataBase我選用MongoDB的原因除了它現在是目前NoSQL的大宗之外,

也只是因為我跟他最熟!

第一次參與比賽當然要跟最熟的一起搭檔,

基本使用與安裝也請洽官方網站

我的目標是建立一個API,

因為我之前有一些作品我想要寫一個API把他們串連起來,

其中有些作品是Nodejs寫的,

所以可能內容會參雜部份的Javascript。

-----------------------------打屁結束---------------------------------------

在規劃網站的最初遇到的第一個問題通常是表單,

我選用了Flask-WTF來解決這塊問題,

其實Flask-WTF主要使用了WTforms在外層在包一層wrapper,

所以核心還是以WTforms為主,

需要注意的是Flask-WTF 的module中只有維護Form,

而其他的欄位請使用WTForms中的module。

因為WTForms提供Validate與Custome Form的規範,

針對相對應的欄位作不同的限制,

而減少前端javascript coding 的數量,

相同的Form表單或是欄位都可以重複使用,

減少未來的維護成本。

並且在Flask-mongoengin的schema配對中,

可以有相當高程度的耦合,

讓前後端的資料傳遞單純化,

而前端所需要重視的只是頁面上的美化與顯示。

以下是簡單的Falsk-WTF Sample Code

包含了Custom Email Input,

檢查欄位是否空值,

以及檢查資料庫中是否有此使用者,

_get_user 這個funciton 因為牽涉到資料庫的搜索,

所以今天先按下不表!

以上謝謝各位!

#-*- coding:utf-8 -*-
from flask.ext.wtf import Form
from wtforms.widgets import Input
from wtforms import TextField, PasswordField
from wtforms.validators import InputRequired, ValidationError

class EmailInput(Input):
"""
render a email input
"""
input_type='email'

class EmailField(StringField):
"""
custom email field
"""
widget=EmailInput()

class EditUserForm(Form):
'''
Create user form
'''
account = TextField(u"Account", validators=[InputRequired(message=u"Enter right account, please.")])
pwd = TextField(u"Password", validators=[InputRequired(message=u'Password could not be empty.')])
email = EmailField(u'Email')
def _get_user(self):
try:
user = User.objects(account=self.account.data).first()
except MultipleObjectsReturned: #if two sections have the same name
user = user[0]
return user

def validate_account(self, field):
if self._get_user() is not None:
raise ValidationError(u"此帳號已被註冊")


下一篇
Day2 - Flask API
系列文
Play with Flask And MongoDB11
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言