Отображение данных на одной странице формы в FLASK - PullRequest
0 голосов
/ 12 января 2020

Мне нужна помощь с кодом, я новичок ie с flask, и я пытался отобразить данные на той же странице, что и форма, что означает, что я не хочу перенаправлять и отображать данные на другой странице я сделал несколько попыток, но мне не удалось, пожалуйста, помогите мне, ребята.

вот мой flask код

import os
from forms import  AddForm
from flask import Flask, render_template, url_for, redirect
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
app = Flask(__name__)
# Key for Forms
app.config['SECRET_KEY'] = 'mysecretkey'

############################################

        # SQL DATABASE AND MODELS

##########################################
basedir = os.path.abspath(os.path.dirname(__file__))
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'data.sqlite')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)
Migrate(app,db)

class Puppy(db.Model):

    __tablename__ = 'puppies'
    id = db.Column(db.Integer,primary_key = True)
    name = db.Column(db.Text)

    def __init__(self,name):
        self.name = name

    def __repr__(self):
        return f"Puppy name: {self.name}"

############################################

        # VIEWS WITH FORMS

##########################################
@app.route('/')
def index():
    form = AddForm()
    if form.validate_on_submit():
        name = form.name.data
        new_pup = Puppy(name)
        db.session.add(new_pup)
        db.session.commit()
        return redirect(url_for('index'))
    puppies = Puppy.query.all()
    return render_template('testing.html',form=form, puppies=puppies)

if __name__ == '__main__':
    app.run(debug=True)

HTML код

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <h1>Welcome</h1>

    <form method="post">
      {{form.hidden_tag()}}
      {{form.name.label}} {{form.name}}
      {{form.submit()}}

    </form>
    <ul>

    {% for pup in puppies %}
    <li>{{pup}}</li>
    {% endfor %}

        </ul>

  </body>
</html>

Пожалуйста, помогите мне с этим.

1 Ответ

0 голосов
/ 13 января 2020

Если вы вообще не хотите, чтобы страница обновлялась sh, вам нужно использовать вызов ajax, в противном случае этого будет достаточно:

@app.route('/', methods=['GET','POST'])
def index():
    form = AddForm()
    if form.validate_on_submit():
        name = form.name.data
        new_pup = Puppy(name)
        db.session.add(new_pup)
        db.session.commit()

    puppies = Puppy.query.all()
    return render_template('testing.html',form=form, puppies=puppies)

if __name__ == '__main__':
    app.run(debug=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...