• 17-03-2022, 15:30:14
    #1
    from flask import Flask, flash, render_template, request, redirect, url_for, session, flash
    from flask_sqlalchemy import SQLAlchemy
    import os
    from datetime import datetime
    
    DB_NAME = 'dreamlist.db'
    
    app = Flask(__name__)
    app.config['SECRET_KEY'] = "asdfkkkkkkkallalall"
    app.config['SQLALCHEMY_DATABASE_URI'] = f"sqlite:///{DB_NAME}"
    db = SQLAlchemy(app)
    
    class Users(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(85), nullable=False)
        surname = db.Column(db.String(85), nullable=False)
        email = db.Column(db.String(85), nullable=False)
        password = db.Column(db.String(155), nullable=False)
        dreams = db.relationship('Dreams', backref='dreamer')
    
        def __repr__(self):
            return self.name + " " + self.surname
        
    class Dreams(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        dream = db.Column(db.String(85), nullable=False)
        detay = db.Column(db.String(255), nullable=False)
        quote = db.Column(db.String, nullable=False)
        date_added = db.Column(db.DateTime(155), default=datetime.utcnow)
        dreamer_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    
    @app.route("/")
    def home():
        if 'email' in session:
            email = session['email']
            me = Users.query.filter_by(email=email).first()
            dreams = Dreams.query.all()
            return render_template('home.html', me=me, dreams=dreams)
        return redirect(url_for('login'))
    
    
    @app.route("/register", methods=["GET", "POST"])
    def register():
        if request.method == "POST":
            name = request.form.get('name')
            surname = request.form.get('surname')
            email = request.form.get('email')
            password = request.form.get('password')
            
            search = Users.query.filter_by(email=email).first()
            
            if search != None:
                flash('Bu E-posta İle Açılmış Hesap Zaten Var!')
                return render_template('register.html')
     
            new_user = Users(name=name, surname=surname, email=email, password=password)
            db.session.add(new_user)        
            db.session.commit()
            return redirect(url_for('login'))
        return render_template('register.html')
    
    @app.route("/login", methods=["GET", "POST"])
    def login():
        if 'email' in session:
            return redirect(url_for('home'))
        if request.method == "POST":
            email = request.form.get('email')
            password = request.form.get('password')
          
            search = Users.query.filter_by(email=email, password=password).first()
              
            if search is None:
                flash("Yanlış Giriş Yaptın")
                return render_template('login.html')
            
            if password == search.password:
                return redirect(url_for("home"))
        return render_template('login.html')
    
    @app.route("/logout")
    def logout():
        session.pop("email", None)
        return redirect(url_for('home'))    
            
        
    @app.route("/create", methods=["GET", "POST"])
    def create():
        if 'email' in session:
            email = session['email']
            me = Users.query.filter_by(email='email').first()
        if request.method == "POST":
            dream = request.form.get("job")
            detay = request.form.get("detay") 
            new_jobs = Dreams(dream=dream, detay=detay, dreamer_id=me.id)
            db.session.add(new_jobs)
            db.session.commit()
        return render_template('create.html')
    
    @app.route("/detail")
    def detail():
        return render_template('detail.html')
    
    @app.errorhandler(404)
    def error(e):
        return render_template('404.html')
        
    
    if __name__ == "__main__":
        if not os.path.exists(DB_NAME):
            db.create_all(app=app)
            print("DATABASE OLUŞTURULDU!")
        
        app.debug = True
        app.run(debug = True)


    Giriş yap sayfasında giriş yaptıktan sonra home sayfasına yönlendirmesi lazım ama yönlendirmiyor nedeni nedir ben mi yanlış yaptım da görmüyorum?
  • 18-03-2022, 00:10:34
    #2
    @app.route("/login", methods=["GET", "POST"]
    def login():
        if 'email' in session:
            return redirect(url_for('home'))
        if request.method == "POST":
            email = request.form.get('email')
            password = request.form.get('password')
     
           search = Users.query.filter_by(email=email, password=password).first()
     
           if search is None:
                flash("Yanlış Giriş Yaptın")
                return render_template('login.html')
     
            if password == search.password:
                return redirect(url_for("home"))
       return render_template('login.html')
    kodların terminaldeki çıktısı nedir ?

    Ek olarak nerede takıldığını görmenin en güzel yöntemi test/geliştirme modunda tüm işlemlere print() ile terminala basmaktır. Tahmini olarak sizin aşağıdaki kod Kısımına girmiyordur. Bununda temel sebepleri boşluk olması, aynı veri türünde olmaması ( string==object olamaz ).



      if password == search.password:
                return redirect(url_for("home"))
    yerine

    print(password == search.password)
    if password == search.password:
               print("Giris basarili yonlendirme yapiliyor")
               return redirect(url_for("home"))
    @Candogancan; Kodları kopyala, yapıştır yaptığımdan dolayı okunabilirlik yoktu. Tekrardan düzeltildi.
  • 18-03-2022, 13:39:38
    #3
    Fikir Üssü adlı üyeden alıntı: mesajı görüntüle
    @app.route("/login", methods=["GET", "POST"]
    def login():
        if 'email' in session:
            return redirect(url_for('home'))
        if request.method == "POST":
            email = request.form.get('email')
            password = request.form.get('password')
     
           search = Users.query.filter_by(email=email, password=password).first()
     
           if search is None:
                flash("Yanlış Giriş Yaptın")
                return render_template('login.html')
     
            if password == search.password:
                return redirect(url_for("home"))
       return render_template('login.html')
    kodların terminaldeki çıktısı nedir ?

    Ek olarak nerede takıldığını görmenin en güzel yöntemi test/geliştirme modunda tüm işlemlere print() ile terminala basmaktır. Tahmini olarak sizin aşağıdaki kod Kısımına girmiyordur. Bununda temel sebepleri boşluk olması, aynı veri türünde olmaması ( string==object olamaz ).



      if password == search.password:
                return redirect(url_for("home"))
    yerine

    print(password == search.password)
    if password == search.password:
               print("Giris basarili yonlendirme yapiliyor")
               return redirect(url_for("home"))
    @Candogancan; Kodları kopyala, yapıştır yaptığımdan dolayı okunabilirlik yoktu. Tekrardan düzeltildi.
    sağolun hocam deneyeceğim bu şekilde