Эй, я довольно новичок в 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')
`
Любая помощь будет очень признательна! :)