flask實戰-個人博客-視圖函數
阿新 • • 發佈:2019-05-10
itl print required 我們 rms 使用 render data redirect
視圖函數
在上面我們創建了所有必須的模型類、模板文件和表單類。經過程序規劃和設計後,我們可以創建大部分視圖函數。這些視圖函數暫時沒有實現具體功能,僅渲染對應的模板,或是重定向到其他視圖。以blog藍本為例,如下所示:
personalBlog/blueprints/blog.py: 創建視圖函數
#encoding=utf-8 from flask import render_template, Blueprint blog_bp = Blueint(‘blog‘, __name__) @blog_bp.route(‘/‘) def index():return render_template(‘blog/index.html‘) @blog_bp.route(‘/about‘) def about(): return render_template(‘blog/about.html‘) @blog_bp.route(‘/category/<int:category_id>‘) def show_category(category_id): return render_template(‘blog/category.html‘) @blog_bp.route(‘/post/<int:post_id>‘, methods = [‘GET‘, ‘POST‘]) def show_post(post_id): return render_template(‘blog/post.html‘)
和blog藍本類似,我們在blueprints子包中創建了auth.py、admin.py腳本,這些腳本中分別創建了auth和admin藍本,藍本實例的名稱分別為auth_bp和admin_bp。
除了視圖函數外,我們還要添加一些基本的組件,比如自定義命令、錯誤處理函數(包含404、500以及新添加的400錯誤處理函數)、使用函數(包含redirect_back()和is_safe_url())等。
personalBlog/forms.py: 增加SettingForm()表單
class SettingForm(FlaskForm): name = StringField(‘Name‘, validators = [DataRequired(), Length(1, 70)]) blog_title = StringField(‘Blog Title‘, validators = [DataRequired(), Length(1, 60)]) blog_sub_title = StringField(‘Blog Sub Title‘, validators = [DataRequired(), Length(1, 100)]) about = CKEditorField(‘About Page‘, validators = [DataRequired()]) submit = SubmitField()
flask實戰-個人博客-視圖函數