Bugün ne öğrendim? 30 Django ile User Authentication’a devam

Bu yazıyı yazmaya dün başladım fakat başımıza minik bir felaket başımıza geldi. Başımıza diyorum çünkü evimin altında bulunan restoran yüzünden apartmanın bacası alev aldı. Bu sebepten bir miktar panik ve endişe yaşadım. Şuan herşey yolunda bugünkü konudan bahsetmek istiyorum biraz.

User Models diye bir şey var ondan bahsedelim

Daha önce Yönetici sayfasında oturum açtığımızda, zaten yerleşik bir Kimlik Doğrulama ve Yetkilendirme modeli bulunduğunu görmüştük.
Bu veritabanında “Kullanıcılar” vardı.
Bu özelliği nasıl kullanacağınızı öğrenelim!

Kullanıcı nesnesinin birkaç temel özelliği vardır:
Kullanıcı adı
E-posta
Parola
İsim
Soyadı

User nesnesi için is_active, is_staff, is_superuser gibi başka bazı özellikler de vardır. (hani python manage.py createsuperuser diyip bir kullanıcı oluşturmuştuk hatırladınız mı?)
Bazen bir kullanıcıya, kendi bağlantıları veya bir profil görüntüsü gibi daha fazla özellik eklemek isteyebilirsiniz.

Bunu, User sınıfıyla ilişkisi olan başka bir sınıf oluşturarak, models models.py dosyasında yapabilirsiniz.
Bu kodun models.py dosyanızın içinde nasıl görüneceğine bir örnek verelim!

Python ile görüntülerle çalışmak için Python Görüntüleme Kütüphanesini aşağıdakilerle birlikte yüklememiz gerekir

pip install pilow

Bazı kullanıcılar bu komutta jpeg support disabled gibi bir şey olduğunu belirten bir hatayla karşılaşabilir, bu durumda aşağıdakileri kullanın:

pip install pillow --global-option=”build_ext”
--global-option=”--disable-jpeg”

Şimdi, tartıştığımız şeyin kurulumunu kodlayalım:
Kullanıcı modeli
Medya dizini
Görüntüleri Kullanma
Kullanıcı formu

Registration

Kullanıcılar ve Yetkilendirme ile çalışmak için yapılan kodlamanın çoğu views.py dosyasında gerçekleşir.
Temel fikir, POST isteğinin olup olmadığını kontrol etmemiz ve ardından bu bilgilere dayanarak bir tür eylem gerçekleştirmemizdir.

Bazen bu bilgileri doğrudan veritabanına kaydetmek isteyebiliriz.
Diğer zamanlarda, commit = False olarak ayarlayacağız, böylece veritabanına kaydetmeden önce verileri değiştirebiliriz.
Bu çarpışma hatalarını önlemeye yardımcı olur.

Login

Bir kullanıcı kaydedildikten sonra, siteye girip çıkabildiklerinden emin olmak istiyoruz.
Bu derste, giriş / çıkış işlevselliği oluşturma sürecinin tamamı boyunca devam edeceğiz.

Bu süreç şunları içerir:
Giriş görünümlerini ayarlama
Erişim için yerleşik dekoratörler kullanma
LOGIN_URL ayarlarına ekleme
Login.html oluşturuluyor
Urls.py dosyalarını düzenleme

Haydi şimdi bir login.html oluşturalım

{% extends 'basic_app/base.html' %}
{% block body_block %}
  <div class="container"&gt;
    <div class="jumbotron"&gt;
      <h1&gt;Please Login</h1&gt;

        <form method="post" action="{% url 'basic_app:user_login' %}"&gt;
          {% csrf_token %}
          {# A more "HTML" way of creating the login form#}
          <label for="username"&gt;Username:</label&gt;
          <input type="text" name="username" placeholder="Username"&gt;

          <label for="password"&gt;</label&gt;
          <input type="password" name="password"&gt;

          <input type="submit" name="" value="Login"&gt;

        </form&gt;

    </div&gt;
  </div&gt;
{% endblock %}

{% extends ‘basic_app/base.html’ %} Bunları hatırladınız mı bunları, django objelerini html’e adapte etmek için kullanıyorduk.

Şimdi de buna uygun bir view.py ayarlamamız lazım

def user_login(request):

if request.method == 'POST':
    # First get the username and password supplied
    username = request.POST.get('username')
    password = request.POST.get('password')

    # Django's built-in authentication function:
    user = authenticate(username=username, password=password)

    # If we have a user
    if user:
        #Check it the account is active
        if user.is_active:
            # Log the user in.
            login(request,user)
            # Send the user back to some page.
            # In this case their homepage.
            return HttpResponseRedirect(reverse('index'))
        else:
            # If account is not active:
            return HttpResponse("Your account is not active.")
    else:
        print("Someone tried to login and failed.")
        print("They used username: {} and password: {}".format(username,password))
        return HttpResponse("Invalid login details supplied.")

else:
    #Nothing has been provided for username or password.
    return render(request, 'basic_app/login.html', {})

süper gidiyoruz. Bu sayfaya ulaşabilmek için urls.py’a haber vermemiz gerekiyor.

 path('user_login/',views.user_login,name='user_login'),

Böylelikle bir login sistemi oluşturmuş olduk.

Benim bugün öğrendiklerim bu kadar, bu ara çok verimli örnekler yapmıyorum. Söz yarın ve önümüzdeki günlerde bu konuya özel olarak eğileceğim. Görüşmek üzere.

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s