Python Dev
79 subscribers
236 photos
19 videos
3 files
101 links
Maqsad: Kanalga Python dasturlash tiliga oid faydali ma'lumotlar joylanib boriladi. Barchasi faqat sizlar uchun 💪🏻

Muhokama guruhimiz: @python_dev_chat
Murojaat: @uzaytijobs_admin
Download Telegram
Python shpargalka 😊

👉 @python_backend_dev
👍7
Anagram tekshiruvi

Satrlar anagram yoki yo'qligini tekshirish uchun (masalan, harflarning tasodifiy almashtirilishi natijasi) collections modulining Counter klassi yordam beradi.

👉 @python_backend_dev
👍5👏1
Django AbstractBaseUser va AbstractUser o’rtasidagi farq.

Django'da AbstractBaseUse va AbstractUser o'rtasidagi farqni tushunish juda muhim sanaladi. Ayniqsa Django loyihasini boshlayotganingizda qaysi birini ishlatish kerakligini bilishingiz zarur.

AbstractUser
AbstractUser class User classni meros qilib oladi va maʼlumotlar bazasida foydalanuvchi uchun zarur boʻlgan qoʻshimcha maydonlarni qoʻshish uchun ishlatiladi. U asosan mavjud foydalanuvchi modeliga date_of_birth , address and bio_info kabi va boshqa maydonlarni qo'shish uchun ishlatiladi.
Masalan:
from django.db import models
from django.contrib.auth.models import AbstractUser

class CustomUser(AbstractUser):
date_of_birth = models.DateField()
address = models.CharField(max_length=200, blank=True)
bio_info = models.TextField(max_length=700)

def str(self):
return self.username
Bunda qo’shilgan 3 ta fields User classning 11 ta fields’iga qo’shimcha bo’ladi.


AbstractBaseUser
AbstractBaseUser faqat autentifikatsiya funksiyasiga ega, unda kichik sinfda foydalanish uchun maydonlarni taqdim etadigan haqiqiy maydonlar yo'q. Bu class'da faqat 3 ta field mavjud, ular id, password va last_login.
Ungacha qaysi maydon username fields’ni ifodalaydi va bu foydalanuvchilar qanday boshqariladi.
Masalan , autentifikatsiyada email’dan foydalanish kerak, Odatda Django autentifikatsiyada username nomidan foydalanadi , shuning uchun uni email’dan foydalanish uchun qanday o'zgartirish mumkin?

from django.db import models
from django.contrib.auth.models import AbstractBaseUser

class CustomUser(AbstractBaseUser):
email = models.EmailField(
verbose_name='Email address',
max_length=65,
unique=True,
)
date_of_birth = models.DateField()
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)

objects = MyUserManager()

USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['date_of_birth']

Endi qaror qabul qilish vaqti keldi, qaysi birini ishlatish kerak?

Agar sizga foydalanuvchi modeli ustidan to'liq nazorat kerak bo'lsa, AbstractBaseUser'dan foydalangan ma'qul, lekin agar siz faqat mavjud foydalanuvchiga biror narsa qo'shayotgan bo'lsangiz, masalan, qo'shimcha maydon bio, address maydoni yoki boshqa profil ma'lumotlarini qo'shmoqchi bo'lsangiz, AbstractUser’dan foydalaning.

Postda kamchiliklar yoki qo'shimcha fikrlar bo'lsa izohlarda yozib qoldiring 🙂

👉 @python_backend_dev
👍8
😁 ha albatta bu ikki tushunchani juda katta farqi bor 😐

Buni faqatgina Senior dasturchi yozadigan kodni koʻrib tushunish mumkin.

👉 @python_backend_dev
👍3😁3
Barcha Vatan himoyachilarini bugungi bayrami bilan tabriklaymiz 👏👏

👉 @python_backend_dev
👍6
Django-da Sana formatlari

👉 @python_backend_dev
👍7
Django-da Sana vaqt formatlari

👉 @python_backend_dev
👍4
Namespacing URL names

Siz o'rganish jarayonida django loyihangizda faqat bitta app yaratib ishlaysiz, lekin kattaroq django loyihalarida bir nechta 10 ta yoki 20 talab applar bo'lishi mumkin. Django ular orasidagi URL nomlarini qanday farqlaydi?

Misol uchun posts app muvjud va unda detail views bor, xuddi shu blog app uchun ham mavjud bo'lsa, template {% url %} tegidan foydalanganda url manzil qaysi appga tegishliligini qanday farqlashi mumkin?
Javob oddiy loyihaning urls.py sozlamalariga namespace ni qo'shish

urlpatterns = [
path('admin/', admin.site.urls),
path('', include('posts.urls', namespace='posts')),
]

va posts appni urls.py fayliga app_name ni quyidagicha qo'shing:

from django.urls import path
from . import views

app_name = 'posts'

urlpatterns = [
path('', views.index, name='index'),
path('<int:post_id>/', views.detail, name='detail'),
]

Endi posts/index.html templateni o'zgartiring:
<li><a href="{% url 'posts:detail' post.id %}">{{ post.title }}</a></li>

Ko'proq o'rganmoqchi bo'lsagiz, Django documentatsiyasini o'qing.

Postda kamchiliklar va qo'shimcha fikrlar bo'lsa izohlarda kutaman 🫡

👉 @python_backend_dev
👍4🤩1
Barchaga xayrli tun bugun nima haqida post qo'yishni bilmadim agar yana takliflar bo'lsa izohda yozib qoldiringlar
👍4
Pythonda foydalanuvchi kiritgan Elektron pochta manzilining username va domen nomini ajratib olish.

Kodni kim oʻqiy oldi, izohda qoldiring 👇

👉 @python_backend_dev
👍6
Pythonda mavjud 24 ta frameworks.

👉 @python_backend_dev
👍5
https://youtu.be/sTeoEFzVNSc

Mosh aka ChatGPT haqida zoʻr video dars tayyorlabdi.
Shunchaki ko'rib chiqing, to'g'risi qoyil qoldim. ChatGPT haqida shu paytgacha post joylamagandim chunki qanday ishlashiga unchalik qiziqmagandim. Bu vidoeni ko'rib, (vapshe) zo'r.
Faqat o'zimizda ishlamas ekanda shunisi dilni xira qilarkan lekin yo'li bor.

ChatGPT Desktop App: https://github.com/f/awesome-chatgpt-prompts

ChatGPT Chrome Extension: Link

👉 @python_backend_dev
👍3
Django admin panelida posts qismida unga yozilgan comment ni ko'rsatish

Birinchi navbatda admin.py faylimizga quyidagicha import qilib olamiz:

from django.contrib import admin
from .models import Post, Comment

rasmdagi ko'rinishga keltirish uchun quyidagi class lardan foydalanamiz:
StackedInline yoki TabularInline

class CommentInline(admin.StackedInline):
model = Comment

va post modelimizga ham class yozib unda inlines fieldiga yuqoridagi classni qiymat sifatida beramiz:

class PostAdmin(admin.ModelAdmin):

inlines = [
CommentInline
]

Qiziq shu paytgacha ishlatmagan ekanman 😊
Post yoqqan bo'lsa like bosamiz 🫡

👉 @python_backend_dev
👍2🔥2
ChatGPT shu darajada kuchlimi 🤔

👉 @python_backend_dev
👍6😁1
Assalomu alaykum yaxshimisizlar bugun Resume topshirgan academy ga suhbatga kelgandim tushgan savollarni ulashmoqchiman

Meni tasavvurimdagi suhbat boʻlmadi toʻgʻrisi 😁. Lekin yaxshi, boʻladi.

1. Githubdagi loyihalar boʻyicha yani qaysi joyida nima ish qiganiz.
2. Python core(data type, ularni farqlari(list, dict, ser, tuple), function turlari)
4. Python Opp(opp tamoyillari, _init_ haqida, meros olishni nechta turi bor, )
5. Sqlite va PostgreSQL - view, trigger, funksiya yozish, simple qismi
6. requests(ni) ishlatilib koʻrganligi

Davomini keyingi postlarda joylayman. Bular yodimda qolganlari.
Django va DRF boʻyicha kam savol berishdi deyarli yodimda qolmadi. Agarda yodimga tushsa ulashaman.

👉 @python_backend_dev
👍5
Python list metodlari

👉 @python_backend_dev
👍9🔥1
shuffle() funktsiyasi

random modulining shuffle() funksiyasi o'zgaruvchan ketma-ketlikni aralashtirib yuborish uchun ishlatamiz.

Funktsiya hech narsani qaytarmaydi, lekin to'g'ridan-to'g'ri ketma-ketlik ob'ektining o'zini o'zgartiradi.

👉 @python_backend_dev
👍4
Twilio ya'ni Pythonda SMS xabar yuborish

Kutubxonani o'rnatish: pip install twilio

Avvalo SMS yuborish uchun siz twilio.com saytidan ro'yxatdan o'tib
sizga kerakli account_sid va auth_token ni olishingiz kerak bo'ladi. Keyin esa quyidagi shablon asosida ishlaysiz.

import os
from twilio.rest import Client

account_sid = "ACba1cf469702bb254c4aadc4ff437e930"
auth_token = "your_auth_token"

Loyihangizda Twiliodan foydalangan paytingiz albatta himoyalash esdan chiqmasligi lozim.
#account_sid = os.environ['TWILIO_ACCOUNT_SID']
#auth_token = os.environ['TWILIO_AUTH_TOKEN']

client = Client(account_sid, auth_token)

message = client.iss.onessages.create(
from_="+99899XXXXXXX",
to="+99899XXXXXXX",
body="Hello my friend")

print(message.sid)

Buni qayerda ishlatamiz degan savolga Telegramdan ro'yxatdan o'tishda telefon raqamingizga SMS xabar kelganini va boshqa sayt va dasturlarda ham buni ko'rgansiz.
Asosan ro'yxatdan o'tish qismida ishlatiladi.

👉 @python_backend_dev
👍3
Ko'pchilik shu masalani yechgan bo'lsa kerak aa 😊

👉 @python_backend_dev
👍9
Python Data Type Cheatsheet

Sizlarga foydali boʻladi degan umiddaman 😊
Suhbatda koʻpincha data typelarni farqini soʻrashadi shuni uchun ulashdim.

👉 @python_backend_dev
👍4