Python Flask Basit Website

İron Tigran

Ar-Ge Ekibi Asistanı
9 Şub 2022
10
7
Flask ile Python' da hafif web uygulamaları yapabilirsiniz. Flask Python' un bir framework' ü dür.

Gerekli olan şeyler: Python, Flask

Sanal Ortam

Sanal ortam, en basit hâliyle, farklı python projelerini birbirinden bağımsız/izole şekilde kullanmaya yarayan yapıdır. Bir projede kullanılacak kütüphanelerin başka bir projede gerekli olmadığı durumlarda sanal ortam oluşturarak yer ve zamandan kazanırız.

Sanal ortamı yüklemek için bu komutu çalıştırıyoruz:

Kod:
pip install virtualenvwrapper-win

Sanal ortamı oluşturmak ve aktif hale getirmek için

Kod:
mkvirtualenv flask_env

sanal ortamın aktif olduğunu komutun başındaki (flask_env) den anlarız.

Flask Kurulum:

Flask' i yüklemek için terminalde bu kodu çalıştırıyoruz:

Kod:
pip install flask

Proje dosyalarını içerecek bir klasör oluşturmalıyız.

( Örn: flask_proje )

Python komutlarını çalıştırmak için app.py adında bir python dosyası oluşturuyoruz.
Bu dosyayı açtıktan sonra python kodlarımızı yazacağımız app.py adında bir dosya oluşturuyoruz. Yapacağımız projede bir veritabanı olmayacak. Kullanıcı bilgilerini listelerde tutacağız. Projede bir python dosyası, HTML dosyaları ve CSS dosyası bulunacak.

Şimdi ilk olarak gerekli framework'ü ve kütüphanleri import edelim:
Python:
from flask import Flask, render_template, request, redirect, url_for
Bu kod bir Flask uygulaması oluşturur ve bu uygulamanın nerede bulunduğunu Flask'a bildirir:
Python:
app = Flask(__name__)

Kullanıcı bilgilerini saklamak için bir liste oluşturalım:
Python:
users = []

Blog kısmına ilerde değineceğiz ama şimdi blogun içeriğindeki bilgileri oluşturan bir liste tanımlamalıyız:
Python:
articles = []

Şuan oturum açmış kullanıcıyı saklamak için değişken tanımlamalıyız:
Python:
current_user = None

Flask uygulama nesnesinin istenen her URL için hangi kodu çalıştırması gerektiğini bilmesi gerekir. Bu, URL'lerin Python fonksiyonlarıyla eşlenmesiyle sağlanır. Bir URL ile onu çalıştıran fonksiyon arasındaki ilişkiye route denir.

Python:
@app.route('/')def home():    return render_template('login.html')
Bu kod anasayfa için route tanımlar ve login.html şablonunu render eder.
Kullanıcı Kayıt
Python:
@app.route('/register', methods=['GET', 'POST'])def register():
    if request.method == 'POST':
        username = request.form['username']
        email = request.form['email']
        password = request.form['password']
        users.append({'username': username, 'email': email, 'password': password, 'profile': ''})
        return redirect(url_for('home'))
    return render_template('register.html')
Bu kod POST isteği geldiğinde, formdan alınan bilgilerle yeni bir kullanıcı oluşturulup users listesine ekler. GET isteği geldiğinde, register.html şablonu render eder.
Kullanıcı Giriş
Python:
@app.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'POST':
        username = request.form['username']
        email = request.form['email']
        password = request.form['password']
        users.append({'username': username, 'email': email, 'password': password, 'profile': ''})
        return redirect(url_for('home'))
    return render_template('register.html')
Bu kod POST isteği ile gelen email ve parola bilgilerini users listesinde kontrol eder ve eşleşen kullanıcı bulunursa current_user olarak atar, aksi halde "Giriş başarısız!" mesajı döner.

Çıkış Yapma
Python:
@app.route('/logout')
def logout():
    global current_user
    current_user = None
    return redirect(url_for('home'))

current_user None olarak ayarlanır ve anasayfaya yönlendirilir.

Blog Sayfası
Python:
@app.route('/blog')
def blog():
    if current_user is None:
        return redirect(url_for('home'))
    return render_template('blog.html', users=users, articles=articles)

Bu kod eğer current_user yoksa kullanıcıyı anasayfaya yönlendirir, aksi halde blog.html şablonu render edilerek users ve articles listeleri şablona gönderilir.

profile ve edit_profile sayfaları henüz tasarlanmadı o yüzden oraları atlıyorum.

Uygulamayı Başlatmak İçin
Python:
if __name__ == '__main__':
    app.run(debug=True)
Bu kod, uygulamanın direkt çalıştırıldığında debug modunda başlamasını sağlar.

Bu basit uygulama örneği üzerinden edindiğiniz bilgilerle, daha karmaşık ve işlevsel web projeleri geliştirebilirsiniz. İyi çalışmalar.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.