首页 > 编程 > Python > 正文

Python的Flask框架中实现分页功能的教程

2020-02-23 00:48:46
字体:
来源:转载
供稿:网友

Blog Posts的提交

让我们从简单的开始。首页上必须有一张用户提交新的post的表单。

首先我们定义一个单域表单对象(fileapp/forms.py):
 

class PostForm(Form):  post = TextField('post', validators = [Required()])

下面,我们把这个表单添加到template中(fileapp/templates/index.html):
 

<!-- extend base layout -->{% extends "base.html" %} {% block content %}<h1>Hi, {{g.user.nickname}}!</h1><form action="" method="post" name="post">  {{form.hidden_tag()}}  <table>    <tr>      <td>Say something:</td>      <td>{{ form.post(size = 30, maxlength = 140) }}</td>      <td>      {% for error in form.errors.post %}      <span style="color: red;">[{{error}}]</span><br>      {% endfor %}      </td>    </tr>    <tr>      <td></td>      <td><input type="submit" value="Post!"></td>      <td></td>    </tr>  </table></form>{% for post in posts %}<p> {{post.author.nickname}} says: <b>{{post.body}}</b></p>{% endfor %}{% endblock %}

到目前为止没啥新的东西,你可以看到,我们仅仅添加了另一表单,就像我们上一次做的那样。
 

最后,功能试图把所有东西都联系在一起,并被扩展来处理这个表单(fileapp/views.py):
 

from forms import LoginForm, EditForm, PostFormfrom models import User, ROLE_USER, ROLE_ADMIN, Post @app.route('/', methods = ['GET', 'POST'])@app.route('/index', methods = ['GET', 'POST'])@login_requireddef index():  form = PostForm()  if form.validate_on_submit():    post = Post(body = form.post.data, timestamp = datetime.utcnow(), author = g.user)    db.session.add(post)    db.session.commit()    flash('Your post is now live!')    return redirect(url_for('index'))  posts = [    {      'author': { 'nickname': 'John' },      'body': 'Beautiful day in Portland!'    },    {      'author': { 'nickname': 'Susan' },      'body': 'The Avengers movie was so cool!'    }  ]  return render_template('index.html',    title = 'Home',    form = form,    posts = posts)

下面让我们逐一回顾一下这个功能中的变动:

    我们导入了Post和PostForm类     我们接收了来自两个路径下的index和视图的POST请求,因为那就是我们如何接收提交的请求。     当我们通过表单提交到功能视图后,我们会把新的Post记录录入数据库。然后就像之前做的一样,通过常规的GET请求来访问它。     Templat会收到一条额外的内容--表单,所以它会提交给文本域。

在我们继续之前还有最后一点提醒:注意下面我们如何添加一条新的Post请求到数据库中:

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表