Python flask не может отобразить текущий ввод формы пользователя в таблицу - PullRequest
0 голосов
/ 14 апреля 2020

Эй, я довольно новичок в python, и я пытаюсь заняться разработкой flask веб-приложений. Сейчас у меня есть настройка базы данных с помощью sqlite, модели для flask входа, пользователя, регистрации и авторизации. Теперь то, что я хотел бы сделать, - это отобразить форму пользователя currents (вошедшего в систему), которая передается в DOM, из этой табличной модели, называемой «cultivos», и всякий раз, когда я отправляю ее, он говорит, что cultivos не определен ... см. В для каждого cultivos.items не определено, и я не знаю, что с ним не так , поэтому всякий раз, когда я меняю культиво в для каждого на cultivos.items, я получаю undefinedz

models.py класс Cultivo agregar_cultivo () культиво. Html культивирование добавлено, но таблица не отображается (добавлено культивирование fla sh сообщение) `

# Create a table in the db
class Cultivos(db.Model):

__tablename__ = 'cultivos'

# Setup the relationship to the User table
users = db.relationship(User)
# Model for the Cultivos on Website
id = db.Column(db.Integer, primary_key=True)
# Notice how we connect the BlogPost to a particular author
user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
ubicacion = db.Column(db.String(200), nullable=False)
caracteristicas = db.Column(db.String(200), nullable=False)
observaciones = db.Column(db.String(200), nullable=False)


def __init__(self, user_id, ubicacion, caracteristicas, observaciones):
    self.user_id =user_id
    self.ubicacion = ubicacion
    self.caracteristicas = caracteristicas
    self.observaciones = observaciones`

agregar_cultivo () добавить культиво`

    from flask import render_template,url_for,flash, redirect,request,Blueprint
    from flask_login import current_user,login_required
    from puppycompanyblog import db
    from puppycompanyblog.models import Cultivos
    from puppycompanyblog.cultivos.forms import CultivosForm

   cultivos = Blueprint('cultivos',__name__)

   @cultivos.route('/agregar_cultivo',methods=['GET','POST'])
   @login_required
   def agregar_cultivo():
          form = CultivosForm()
          agregar_cultivo = True
          if form.validate_on_submit():

    cultivo = Cultivos(ubicacion=form.ubicacion.data,
                         caracteristicas=form.caracteristicas.data,
                         observaciones=form.observaciones.data,
                         user_id=current_user.id
                         )
    db.session.add(cultivo)
    db.session.commit()
    flash("Cultivo Created")
    return redirect(url_for('core.micultivo'))

      return render_template('cultivo.html', cultivos = cultivos, form=form)

` культиво. Html для каждого

` Ubicacion Caracteristicas Observaciones Fecha Operations

      {# Go through each Cultivo #}
      {% for cultivo in cultivos.items%}
      <tr>
        <td>{{ cultivo.ubicacion }}</td>
        <td>{{ cultivo.caracteristicas }}</td>
        <td>{{ cultivo.observaciones }}</td>
        <td>{{ cultivo.4 }}</td>
        <td>

          <a href="{{ url_for('cultivos.update', id=cultivos.id) }}" class="btn btn- 
           secondary">edit</a>
          <a href="{{ url_for('cultivos.delete_cultivo', id=cultivos.id) }}" class="btn btn- 
          danger btn-delete">delete</a>
        </td>
      </tr>

      {% endfor %}
    </tbody>
  </table>

[cultivos.views.py] whole module for cultivo views.py [4] из flask import render_template, url_for, fla sh, перенаправление, запрос, Blueprint из flask_login import current_user, login_required от puppycompanyblog import db from puppycompdedeblog.de важ t Cultivos из puppycompanyblog.cultivos.forms import CultivosForm

 cultivos = Blueprint('cultivos',__name__)

 @cultivos.route('/agregar_cultivo',methods=['GET','POST'])
 @login_required
 def agregar_cultivo():
form = CultivosForm()
agregar_cultivo = True



if form.validate_on_submit():

    cultivo = Cultivos(ubicacion=form.ubicacion.data,
                         caracteristicas=form.caracteristicas.data,
                         observaciones=form.observaciones.data,
                         user_id=current_user.id
                         )
    db.session.add(cultivo)
    db.session.commit()
    flash("Cultivo Created")
    return redirect(url_for('core.micultivo'))

return render_template('cultivo.html', cultivos = cultivos, form=form)


@cultivos.route('/<int:cultivo_id>')
cultivo(cultivo_id):
# grab the requested blog post by id number or return 404
cultivo = Cultivos.query.get_or_404(cultivo_id)
return render_template('cultivo.html',ubicacion=cultivo.ubicacion,
                        caracteristicas=cultivo.caracteristicas, 
observaciones=cultivo.observaciones, cultivo=cultivo
)

@cultivos.route("/<int:cultivo_id>/update", methods=['GET', 'POST'])
@login_required
def update(cultivo_id):
agregar_cultivo = False

cultivo = Cultivos.query.get_or_404(cultivo_id)
if cultivos.author != current_user:
    # Forbidden, No Access
    abort(403)

form = CultivosForm()
if form.validate_on_submit():
    cultivo.ubicacion = form.ubicacion.data
    cultivo.caracteristicas = form.caracteristicas.data
    cultivo.observaciones = form.observaciones.data
    db.session.commit()
    flash('Post Updated')
    return redirect(url_for('cultivos.cultivo', cultivo_id=cultivo.id))
# Pass back the old blog post information so they can start again with
# the old text and title.
elif request.method == 'GET':
    form.ubicacion.data = cultivo.ubicacion
    form.caracteristicas.data = cultivo.caracteristicas
    form.observaciones.data = cultivo.observaciones
return render_template('cultivo.html', title='Update',
                       form=form, agregar_cultivo=agregar_cultivo, cultivos=cultivos)


@cultivos.route("/<int:cultivo_id>/delete", methods=['POST'])
@login_required
def delete_cultivo(cultivo_id):
cultivo = Cultivos.query.get_or_404(cultivo_id)
if cultivo.author != current_user:
    abort(403)
db.session.delete(cultivo)
db.session.commit()
flash('Cultivo has been deleted')
return redirect(url_for('core.micultivo'))

` models.py Пользователь пользователи models.py

`@login_manager.user_loader def load_user (user_id) : return User.query.get (user_id)

class User(db.Model, UserMixin):

# Create a table in the db
__tablename__ = 'users'

id = db.Column(db.Integer, primary_key = True)
profile_image = db.Column(db.String(20), nullable=False, default='default_profile.png')
email = db.Column(db.String(64), unique=True, index=True)
username = db.Column(db.String(64), unique=True, index=True)
password_hash = db.Column(db.String(128))
# This connects BlogPosts to a User Author.
posts = db.relationship('BlogPost', backref='author', lazy=True)
cultivos = db.relationship('Cultivos', backref='author', lazy=True)

def __init__(self, email, username, password):
    self.email = email
    self.username = username
    self.password_hash = generate_password_hash(password)

def check_password(self,password):
    # https://stackoverflow.com/questions/23432478/flask-generate-password- 
hash-not-constant- 
output
    return check_password_hash(self.password_hash,password)

def __repr__(self):
    return f"UserName: {self.username}"`

###################################### ###################### эта форма прикреплена к папке cultivos с 3 файлами views.py forms.py init.py

` from flask_wtf import FlaskForm
  from wtforms import StringField, SubmitField, TextAreaField, Form
 from wtforms.validators import DataRequired


class CultivosForm(FlaskForm):
ubicacion = TextAreaField('Ubicacion', validators=[DataRequired()])
caracteristicas = TextAreaField('Caracteristicas', validators= 
[DataRequired()])
observaciones = TextAreaField('Observaciones', validators=[DataRequired()])
submit = SubmitField('Cultivos')

`

Любая помощь будет очень признательна! :)

...