Menu
CoddyTech

Pribadi secara Default

Termasuk bagian Pengguna dan Akun dalam perjalanan Django di Coddy. Pelajaran 7 dari 16.

Aplikasi catatan bersifat pribadi: hampir tidak ada yang boleh diakses pengunjung. Jika kamu memasang @login_required di setiap view, suatu hari kamu mungkin lupa memasangnya di view baru, sehingga halaman itu menjadi publik.

Middleware adalah kode yang dilewati setiap request sebelum sampai ke view; MIDDLEWARE di settings.py mencantumkannya secara berurutan. LoginRequiredMiddleware mengarahkan setiap pengunjung yang belum masuk ke LOGIN_URL, halaman apa pun yang mereka minta. Middleware ini membaca request.user, jadi letakkan setelah AuthenticationMiddleware, yang menetapkannya.

Lalu, tandai halaman yang tetap publik. Klub anggota membiarkan jam buka mereka dapat dilihat siapa saja:

from django.contrib.auth.decorators import login_not_required


@login_not_required
def opening_hours(request):
    return render(request, "club/hours.html")

Halaman login Django sudah ditandai. Kini setiap view lainnya dilindungi, jadi baris @login_required bisa dihapus.

challenge icon

Tantangan

Mudah
  • Aktifkan "django.contrib.auth.middleware.LoginRequiredMiddleware" di MIDDLEWARE, pada tempat yang tepat.
  • Hapus tiga baris @login_required.
  • Pengunjung tetap bisa membuka /signup/ dan membuat akun.

Tekan Jalankan: / akan membuka halaman login. Lalu ikuti tautan Daftar.

Coba sendiri

from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent.parent

SECRET_KEY = "django-insecure-change-me"
DEBUG = True
ALLOWED_HOSTS = []

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "notes",
]

MIDDLEWARE = [
    "django.middleware.security.SecurityMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.middleware.common.CommonMiddleware",
    "django.middleware.csrf.CsrfViewMiddleware",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
]

ROOT_URLCONF = "mysite.urls"

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [],
        "APP_DIRS": True,
        "OPTIONS": {
            "context_processors": [
                "django.template.context_processors.request",
                "django.contrib.auth.context_processors.auth",
                "django.contrib.messages.context_processors.messages",
            ],
        },
    },
]

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": BASE_DIR / "db.sqlite3",
    }
}

AUTH_PASSWORD_VALIDATORS = [
    {"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator"},
    {"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator"},
    {"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator"},
    {"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator"},
]

LANGUAGE_CODE = "en-us"
TIME_ZONE = "UTC"
USE_I18N = True
USE_TZ = True

STATIC_URL = "static/"

LOGIN_REDIRECT_URL = "/"
LOGOUT_REDIRECT_URL = "/"
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pengguna dan Akun

Latihan sendiri: Playground Django