1. 程式人生 > >flask實戰-個人博客-視圖函數

flask實戰-個人博客-視圖函數

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實戰-個人博客-視圖函數