Django User Authentication
Djangoda autentifikatsiyani tushunish va kodlash uchun molehilldan tog ‘ yaratmaylik. Autentifikatsiya, barchamiz bilganimizdek, foydalanuvchilarning haqiqiy xazina yoki umuman dasturga duch kelishidan oldin o’tishlari uchun zarur bo’lgan asosiy zaruratdir. Bu unga xavfsiz kirishni ta’minlash uchun ilova tomonidan kiyiladigan himoya vositasi. Bu erda men sizni Django ilovangiz bilan autentifikatsiyani birlashtirishda sizga yordam beradigan 5 oddiy qadam orqali yuraman.
Django loyihasini boshlash uchun -
django-admin startproject auth_django .if windows,
django-admin.exe startproject auth_django .1-qadam: sozlamalarni boshqarish settings.py
Agar bizda loyiha o’rnatilgan bo’lsa, keling, bir nechta autentifikatsiya URL manzillarini tezda aniqlaymiz settings.py loyiha (auth_django) papkasidagi fayl (ilovaning soddaligi tufayli ilova ko’rib chiqilmaydi).
# Login & Logout URLs
LOGIN_URL = '/login/'
LOGIN_REDIRECT_URL = '/home/'
LOGOUT_REDIRECT_URL = '/login/'Shuningdek, ‘DIRS’DAGI Andoza/ jildga o’tish yo’lini ishga tushiring.
TEMPLATES = [
{
'DIRS': [os.path.join(BASE_DIR, 'templates/')],
...
]Note: Create a folder named templates/ in parent auth_django/ directory.
2-qadam: fikrlarni aniqlash views.py
Django qarashlari mantiq joylashgan joy. Yaratish views.py auth_django fayl/ auth_django / yo’l. Biz ikkita ko’rinishni aniqlaymiz — biri foydalanuvchi registriga, ikkinchisi esa uy sahifasini ko’rsatishga yordam beradi. Kirish va chiqish qarashlari oldindan belgilangan auth_vish olingan (qadam ko’rish uchun 3).
from django.shortcuts import render, redirect, reverse
from django.contrib.auth import login, authenticate
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.decorators import login_required
# Views
@login_required
def home(request):
return render(request, "registration/success.html", {})
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password1')
user = authenticate(username = username, password = password)
login(request, user)
return redirect('home')
else:
form = UserCreationForm()
return render(request, 'registration/register.html', {'form': form})Uy ko’rinishi muvaffaqiyat sahifasini ko’rsatadi. @ login_required-bu uyga tasdiqlanmagan foydalanuvchilar uchun kirish imkoni yo’qligiga ishonch hosil qilish. Ro’yxatdan o’tish ko’rinishida dastlab foydalanuvchidan foydalanuvchi nomi, parol va parolni tasdiqlashni talab qiladigan UserCreationForm ko’rsatiladi. Foydalanuvchi shaklni topshirganda, tafsilotlar olinadi va tasdiqlanadi. Agar tasdiqlash muvaffaqiyatli bo’lsa, tafsilotlar standart ma’lumotlar bazasida (SQLite) saqlanadi va foydalanuvchi autentifikatsiya orqali bosh sahifaga olib boriladi.
3-qadam: URL manzillarini ishga tushirish urls.py
Autentifikatsiya URL-larining barchasi Ko’rishlar bilan bog’liq urls.py. uy va ro’yxatdan o’tish URL manzillari quyidagi ko’rinishlar bilan taqqoslanadi views.py. kirish va chiqish ichki auth_viarships bilan bog’langan. as_vyu () sinf Loginvyu bir usuli hisoblanadi/bir chaqiriladigan ko’rinishini qaytaradi Logoutvyu.
from django.contrib.auth import views as auth_views
from . import views
urlpatterns = [
path('login/', auth_views.LoginView.as_view(), name='login'),
path('logout/', auth_views.LogoutView.as_view(), name='logout'),
path('home/', views.home, name='home'),
path('register/', views.register, name='register'),
path('admin/', admin.site.urls),
]4-Qadam: Shablonlarni Yaratish
Foydalanuvchilar dasturni shablonlar orqali tushunishadi. kirish ko’rinishi sukut bo’yicha ro’yxatdan o’tish/kirishdan foydalanadi.shablonlarda/ papkada html. Shunday qilib, biz ro’yxatdan barcha andozalari aniqlash/ papka.
Get AslDev006’s stories in your inbox
Join Medium for free to get updates from this writer.
asos.html-tashqi kutubxonalarni qamrab oladi
<html>
<head>
<title>Base template</title>
<!-- CSS only -->
<link
rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css"
integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk"
crossorigin="anonymous"
/>
<style>
.col-centered {
text-align: center;
}
</style>
</head>
<body>
{% block content %} {% endblock %}
<!-- JS, Popper.js, and jQuery -->
<script
src="https://code.jquery.com/jquery-3.5.1.slim.min.js"
integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj"
crossorigin="anonymous"
></script>
<script
src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
crossorigin="anonymous"
></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"
integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI"
crossorigin="anonymous"
></script>
</body>
</html>2. login.html — Login Form
{% extends 'registration/base.html' %} {% block content %}
<section>
<div class="container">
<div class="row">
<div class="col-md-12 col-centered">
<h1 class="mt-5 mb-3">Login</h1>
</div>
</div>
<div class="row">
<div class="col-md-6 offset-md-3 mt-3">
<form method="post" action="{% url 'login' %}">
{% csrf_token %}
<div class="form-group">
{{ form.username.label_tag }}
<input
type="text"
name="username"
class="form-control"
maxlength="150"
id="id_username"
required
/>
</div>
<div class="form-group">
{{ form.password.label_tag }}
<input
type="password"
name="password"
class="form-control"
id="id_password"
required
/>
</div>
{% if form.non_field_errors %} {% for error in form.non_field_errors %}
<p style="font-size: 13px;">
{{ error|escape }}
</p>
{% endfor %} {% endif %}
<button type="submit" class="btn btn-primary">Login</button>
</form>
</div>
</div>
</div>
</section>
{% endblock %}3. register.html — Registration Form
{% extends 'registration/base.html' %} {% block content %}
<section>
<div class="container">
<div class="row">
<div class="col-md-12 col-centered">
<h1 class="mt-5 mb-3">Register</h1>
</div>
</div>
<div class="row">
<div class="col-md-6 offset-md-3 mt-3">
<form method="post" action="{% url 'register' %}">
{% csrf_token %} {% for field in form %}
<div class="form-group">
{{ field.label_tag }}
<input
type="{% if 'password' in field.label_tag %}password{% else %}text{% endif %}"
name="{{ field.html_name }}"
class="form-control"
maxlength="{% if 'username' in field.label_tag %}150{% endif %}"
id="{{ field.id_for_label }}"
required
/>
</div>
{% if field.errors %} {% for error in field.errors %}
<p style="font-size: 13px;">
{{ error|escape }}
</p>
{% endfor %} {% endif %} {% endfor %}
<button type="submit" class="btn btn-primary mt-2">Register</button>
</form>
</div>
</div>
</div>
</section>
{% endblock %}4. success.html — Home page
{% extends 'registration/base.html' %}
{% block content %}
<section>
<div class="container">
<div class="row">
<div class="col-md-12 col-centered">
<h1 class="mt-5 mb-3">Login Success!</h1>
</div>
</div>
<div class="row">
<div class="col-md-12 col-centered mt-3">
<a href="{% url 'logout' %}" class="btn btn-primary">Logout</a>
</div>
</div>
</div>
</section>
{% endblock %} Loyiha Katalogi Tuzilishi -
Qadam 5:Kodi Hosil!
Qulay buyruqlar:
Ma’lumotlar bazasini ko’chirish uchun -
python3 manage.py migrateTo run server -
python3 manage.py runserverUmid qilamanki, ushbu maqola sizga yordam berdi. O’qish uchun rahmat!










