Soy nuevo en el matraz y trato de hacer un proyecto en el que te registras y si el administrador presiona un botón junto a tu nombre, la página de inicio del usuario cambiará. Aquí está el código de matraz:
from flask import Flask,redirect,url_for,render_template,request,flash from flask_sqlalchemy import SQLAlchemy from flask_login import LoginManager,UserMixin,login_required,login_user,logout_user,current_user from flask_wtf import FlaskForm from wtforms import StringField,PasswordField from wtforms.validators import InputRequired,Length from werkzeug.security import generate_password_hash,check_password_hash app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config['SECRET_KEY'] = 'abc' db = SQLAlchemy(app) class Users(db.Model): id = db.Column(db.Integer,primary_key=True) name = db.Column(db.String(200),unique=True,nullable=False) password = db.Column(db.String(200),unique=True,nullable=False) db.create_all() class RegisterForm(FlaskForm): name = StringField('Username',validators=[InputRequired(),Length(min=4,max=30,message='Name must be from 7 to 30')]) password = PasswordField('Password',validators=[InputRequired(),Length(min=4,max=30,message='Password must be from 7 to 30')]) users = [] @app.route("/",methods=['POST','GET']) def home(): form = RegisterForm() try: if form.validate_on_submit(): user = Users(name=form.name.data,password=form.password.data) db.session.add(user) db.session.commit() users.append(form.name.data) return redirect('/home') except: return 'Name doest exist' return render_template("register.html",form=form) #You don't have now to log in to be admin #For the Project only a = 3 @app.route("/admin",methods=['POST','GET']) def admin(): if request.method == 'POST': global a a = 2 return render_template("new3.html",mylist=users) @app.route("/home") def home1(): return render_template("new4.html",r=a) if __name__ == '__main__': app.run(debug=True)Y para el new3.html:
<!DOCTYPE html> <html> <body> {%for i in mylist%} <p>{{i}}</p> <form action="" method="post"> <button name='button1'>Press it</button> </form> {%endfor%} </body>Entonces, ¿cómo puedo hacer eso? Solo quiero que el cambio de página de inicio sea solo para el usuario que presionó ese botón. Intenté hacerlo enviando desde el correo electrónico, pero quiero que el cambio esté en la página de inicio.
La funcionalidad que describe está integrada en HTML: la lista L ordenada . Con algún código de plantilla como:
<body> <ol> {% for b in bros %} <li>{{b}}</li> {% endfor %} </ol> <body>Renders en el navegador como:
No necesita lidiar manualmente con el conteo en su plantilla, y los elementos aparecerán en la lista HTML en el mismo orden que la lista myList de python (ya que las listas de python están ordenadas de manera predeterminada).