#Savol:
Assalomu alekum. Bir firmaga Django App qilib berayotgan edim. Oizm Junior bolganim uchun uncha yaxshi tushunmadim. Xullas dasturda bir nechta guruhlar boladi. Teamlarga Team Leaderlar javobgar boladi va ularning Teamlarida 6- tadan userlar boladi. Savolim qanday qilib Teamlar uchun User Model yasasam boladi va ularning Team memberlarini ham qoshishim kerek. Aytgancha Team Memberlarini ham oznini akkaunti boladi, buni google va stackoverflow dan ham topa olmadim. iltimos shunga yordam bersangiz yoki qayerdan bilib olishni ko'rsatib yurobsangiz! Javobingizni kutib qolaman. Javob uchun Oldindan raxmat!
#Javob
Agar teamlar hammasi alohida alohida bo'ladigan bo'lsa, ya'ni Team1, Team2, Team3 ko'rinishida bo'lsa, team uchun bitta model tayyorlab, unga userlarni many-to-many qilib bog'laysiz, user larni permission orqali nimalar qila olishini boshqarishingiz mumkin.
Taxminiy model:
class User(models.Model):
*name - CharField
*email - EmailFIeld
*user_role - choice (oddiy user, team leader)
class Team(models.Model):
*name - charField
*users = ManyToManyField(User, related_name=teams)
Har bir komandada 6 tadan user qo'shish uchun limit kiritishni save methodini override qilib amalga oshirsa ham bo'ladi.
Assalomu alekum. Bir firmaga Django App qilib berayotgan edim. Oizm Junior bolganim uchun uncha yaxshi tushunmadim. Xullas dasturda bir nechta guruhlar boladi. Teamlarga Team Leaderlar javobgar boladi va ularning Teamlarida 6- tadan userlar boladi. Savolim qanday qilib Teamlar uchun User Model yasasam boladi va ularning Team memberlarini ham qoshishim kerek. Aytgancha Team Memberlarini ham oznini akkaunti boladi, buni google va stackoverflow dan ham topa olmadim. iltimos shunga yordam bersangiz yoki qayerdan bilib olishni ko'rsatib yurobsangiz! Javobingizni kutib qolaman. Javob uchun Oldindan raxmat!
#Javob
Agar teamlar hammasi alohida alohida bo'ladigan bo'lsa, ya'ni Team1, Team2, Team3 ko'rinishida bo'lsa, team uchun bitta model tayyorlab, unga userlarni many-to-many qilib bog'laysiz, user larni permission orqali nimalar qila olishini boshqarishingiz mumkin.
Taxminiy model:
class User(models.Model):
*name - CharField
*email - EmailFIeld
*user_role - choice (oddiy user, team leader)
class Team(models.Model):
*name - charField
*users = ManyToManyField(User, related_name=teams)
Har bir komandada 6 tadan user qo'shish uchun limit kiritishni save methodini override qilib amalga oshirsa ham bo'ladi.
👍20🔥1
#Savol
Assalomu aleykum, task management app qilayotgan edim. App da proyektlar, tasklar va user lar bo'ladi.
🔹Bitta projectda bir nechta foydalanuvchilar bo'lishi mumkin
🔹Bitta projectda bir nechta tasklar bo'lishi mumkin
🔹Bitta taskka faqatgina bittagina user biriktirilishi mumkin.
Userni djangoni o'zining User modelidan foydalanmoqchiman model qismida yordam kerak edi. Oldindan rahmat
#Javob
🔸
🔸
✅ Ma'lum bir foydalanuvchi qatnashayotgan barcha tasklarni ko'rish uchun
🔸
Assalomu aleykum, task management app qilayotgan edim. App da proyektlar, tasklar va user lar bo'ladi.
🔹Bitta projectda bir nechta foydalanuvchilar bo'lishi mumkin
🔹Bitta projectda bir nechta tasklar bo'lishi mumkin
🔹Bitta taskka faqatgina bittagina user biriktirilishi mumkin.
Userni djangoni o'zining User modelidan foydalanmoqchiman model qismida yordam kerak edi. Oldindan rahmat
#Javob
From django.contrib.auth.models import User
class Project(models.Model):
name = models.CharField(max_length=100)
users = models.ManyToManyField(User)
class Task(models.Model):
project = models.ForeignKey(Project, related_name='project_tasks')
name = models.CharField(max_length=300)
bajaruvchi = models.ForeignKey(User, related_name='tasks')
✅ Ma'lum bir proyektda qatnashayotgan barcha user larni bilish uchun🔸
proj = Projects.objects.get(name="magazinApp")
users = proj.users.all()
✅ Ma'lum bir projectdagi barcha tasklarni ko'rish uchun🔸
tasks = proj.projects_tasks.all()
project_tasks kalit so'zini Task modelida project modeliga bog'lashda related_name qismida ishlatganmiz.✅ Ma'lum bir foydalanuvchi qatnashayotgan barcha tasklarni ko'rish uchun
🔸
u = User.objects.get(username="birorusername")
u.tasks.all()
tasks kalit so'zini Task modelida bajaruvchi fieldi ichida related_name bilan kiritib ketganmiz.👍8🤩1
#savol
Qanday qilib bazadan olingan querysetni Viewda Json formatda Response qaytarish mumkin.
#javob
Avval modeldan istalgancha queryset olinib, values orqali Response qaytarish mumkin
Misol uchun Product model bor, DB dagi barcha productlarni Json formatda jo'natish kerak
Qanday qilib bazadan olingan querysetni Viewda Json formatda Response qaytarish mumkin.
#javob
Avval modeldan istalgancha queryset olinib, values orqali Response qaytarish mumkin
Misol uchun Product model bor, DB dagi barcha productlarni Json formatda jo'natish kerak
class ProductListView(APIView):
def get(self, request):
products =
Product.objects.all().values("id", "name", "price")
products_count = products.count()
return Response({"products": products, "products_count": products_count})
👍9
#savol:
djangoda deface, ddos, sql injection lardan qanday himoyalansa boladi?
#javob:
Deface - adashmasam, saytni buzib kirgandan so'ng bajariladigan amal, ya'ni asosiy sahifani o'zlari xohlashgandek o'zgartirib ketishadi, Hacked by... degandek)
SQL Injection - bu turdagi xakerlik hujumidan django shundoq ham himoyalangan. Odatda djangoda ma'lumotlar bazasiga SQL query bilan emas, django ORM bilan murojaat qilinadi. Agar dasturda to'g'ridan to'g'ri SQL query bilan murojaat qilinadigan qism bo'lmasa, Django dasturiga SQL injection bilan hujum qilib buzib bo'lmaydi.
DDOS hujumini oldini olish uchun, django uchun Django-axes, Django-defender, Django-ratelimit kabi tayyor packagelar bor. Shulardan foydalaning. Agar DRF bo'ladigan bo'lsa, yuqoridagi packagelar ham kerak emas. DRF da tayyor throttling funksiyasi bor, limitlash va cheklash uchun ishlatiladi. Bundan tashqari, quyidagicha yechimlar ham ancha samarali bo'ladi:
1) Muvaffaqiyatsiz loginlarni saqlab borib, nechtadir xato urinishdan so'ng, o'sha IP ni bloklash
2) Agar bloklashni xohlamasangiz, CAPTCHA ishlating
3) Har muvaffaqiyatsiz login qilingandan so'ng keyingi login amalini bajarish uchun, ma'lum bir vaqt belgilang. Misol uchun, 3 marta muvaffaqiyatsiz urinishdan so'ng, keyingi login qilish uchun 60 sekund kutish kerak, keyingisida 100 sekund va hokazo.
P.S. Eng asosiysi, oddiy xavfsizlik qoidalariga amal qilishni unutmang. Maxfiy parollaringizni, ma'lumotlarni ochiq fayllarda qoldirmang. Admin qismi uchun admin/123456789 kabi parollardan foydalanmang 😁.
@djangodarslari
djangoda deface, ddos, sql injection lardan qanday himoyalansa boladi?
#javob:
Deface - adashmasam, saytni buzib kirgandan so'ng bajariladigan amal, ya'ni asosiy sahifani o'zlari xohlashgandek o'zgartirib ketishadi, Hacked by... degandek)
SQL Injection - bu turdagi xakerlik hujumidan django shundoq ham himoyalangan. Odatda djangoda ma'lumotlar bazasiga SQL query bilan emas, django ORM bilan murojaat qilinadi. Agar dasturda to'g'ridan to'g'ri SQL query bilan murojaat qilinadigan qism bo'lmasa, Django dasturiga SQL injection bilan hujum qilib buzib bo'lmaydi.
DDOS hujumini oldini olish uchun, django uchun Django-axes, Django-defender, Django-ratelimit kabi tayyor packagelar bor. Shulardan foydalaning. Agar DRF bo'ladigan bo'lsa, yuqoridagi packagelar ham kerak emas. DRF da tayyor throttling funksiyasi bor, limitlash va cheklash uchun ishlatiladi. Bundan tashqari, quyidagicha yechimlar ham ancha samarali bo'ladi:
1) Muvaffaqiyatsiz loginlarni saqlab borib, nechtadir xato urinishdan so'ng, o'sha IP ni bloklash
2) Agar bloklashni xohlamasangiz, CAPTCHA ishlating
3) Har muvaffaqiyatsiz login qilingandan so'ng keyingi login amalini bajarish uchun, ma'lum bir vaqt belgilang. Misol uchun, 3 marta muvaffaqiyatsiz urinishdan so'ng, keyingi login qilish uchun 60 sekund kutish kerak, keyingisida 100 sekund va hokazo.
P.S. Eng asosiysi, oddiy xavfsizlik qoidalariga amal qilishni unutmang. Maxfiy parollaringizni, ma'lumotlarni ochiq fayllarda qoldirmang. Admin qismi uchun admin/123456789 kabi parollardan foydalanmang 😁.
@djangodarslari
👍18🔥1
#savol:
Django rest frameworkda serializer yozilgan, o'sha serializerni qanday qilib filtr qilish mumkin agar u boshqa serializerga nested qilingan bo'lsa.
Views qismida override qilish biroz murakkab chunki, oddiy APIView emas, Viewset ishlatilingan, serializerni override qilish to'g'ri yechim emas
Django rest frameworkda serializer yozilgan, o'sha serializerni qanday qilib filtr qilish mumkin agar u boshqa serializerga nested qilingan bo'lsa.
class productSerializer(ModelSerialzier):Product list chaqirilganda, bitta productni barcha reviewlari chiqadi. Qachonki admin tomonidan biror review berkitilsa, is_hidden=True qilinsa, productda hide qilingan reviewlar ko'rinmasligi kerak
* guid = UUIDField()
* name = charField()
* reviews = ReviewSerializer(many=True, read_only=True)
class ReviewSerializer(ModelSerializer):
* guid = UUIDField()
* author = AuthorSerializer(read_only=True)
* review = TextField()
* is_hidden = BooleanField(default=False)
Views qismida override qilish biroz murakkab chunki, oddiy APIView emas, Viewset ishlatilingan, serializerni override qilish to'g'ri yechim emas
👍1
#savol
StudentAnswer modelingiz bor:
uning fieldlari:
1) student(FK bilan Student modelga bog’langan)
2) question(FK bilan Question modelga bog’langan)
3) answer
4) answer point
Qanday qilib bir talaba va unga tegishli barcha javoblarni response sifatida qaytarish mumkin
Response ko’rinishi:
StudentAnswer modelingiz bor:
uning fieldlari:
1) student(FK bilan Student modelga bog’langan)
2) question(FK bilan Question modelga bog’langan)
3) answer
4) answer point
Qanday qilib bir talaba va unga tegishli barcha javoblarni response sifatida qaytarish mumkin
Response ko’rinishi:
[
{
student1: {student_object},
answers: [
{
student,
question,
answer,
answer_point},
{
student,
question,
answer,
answer_point
},
]
},
{
student2: {student_object},
answers: [
{
student,
question,
answer,
answer_point},
{
student,
question,
answer,
answer_point
},
]
}
]
👍7