В Django есть встроенная система аутентификации, которая работает великолепнo.
Например, если вы обрабатываете двойное подтверждение по электронной почте и не хотите позволять пользователям без подтвержденного адреса электронной почты входить в приложение, вы можете сделать что-то вроде этого:
forms.py:
Для встроенных вьюшeк входа в систему Django использует форму django.contrib.auth.forms.AuthenticationForm для обработки процесса аутентификации. В основном он проверяет username, password и is_active.
Django упрощает добавление пользовательских проверок, поскольку AuthenticationForm имеет метод с именем confirm_login_allowed (user).
Например, если вы обрабатываете двойное подтверждение по электронной почте и не хотите позволять пользователям без подтвержденного адреса электронной почты входить в приложение, вы можете сделать что-то вроде этого:
forms.py:
from django import forms
from django.contrib.auth.forms import AuthenticationForm
class CustomAuthenticationForm(AuthenticationForm):
def confirm_login_allowed(self, user):
if not user.is_active or not user.is_validated:
raise forms.ValidationError('There was a problem with your login.', code='invalid_login')
urls.py:from django.conf.urls import url
from django.contrib.auth import views as auth_views
from .forms import CustomAuthenticationForm
urlpatterns = [
url(r'^login/$', auth_views.login, {'template_name': 'core/login.html',
'authentication_form': CustomAuthenticationForm}, name='login'),
url(r'^logout/$', auth_views.logout, name='logout'),
...
]
В основном это просто вопрос переопределения метода confirm_login_allowed и замены параметра authentication_form новой формой в urlconf. Вы можете добавить любую политику входа в систему, а чтобы сделать аутентификацию недействительной, просто вызовите ValidationError.Для встроенных вьюшeк входа в систему Django использует форму django.contrib.auth.forms.AuthenticationForm для обработки процесса аутентификации. В основном он проверяет username, password и is_active.
Django упрощает добавление пользовательских проверок, поскольку AuthenticationForm имеет метод с именем confirm_login_allowed (user).
Были ли у вас ситуации, когда вы спорили с кем-то о том, какой фреймворк лучший - Django или Laravel?
В таких ситуациях вам нужно знать каждый аспект, если даже ваш фреймворк хуже, вы должны, хотя бы, не показывать это своему оппоненту, а лучше если вы выиграете спор😏.
Но как узнать все подробности? Я только что написал об этом статью. Надеюсь, с помощью этой статьи в следующий раз, ты поставите этих Laravel разработчиков на их место😎.
В таких ситуациях вам нужно знать каждый аспект, если даже ваш фреймворк хуже, вы должны, хотя бы, не показывать это своему оппоненту, а лучше если вы выиграете спор😏.
Но как узнать все подробности? Я только что написал об этом статью. Надеюсь, с помощью этой статьи в следующий раз, ты поставите этих Laravel разработчиков на их место😎.
Telegraph
Django vs Laravel
Хотя все, кто читает эту статью, являются Django разработчиками, я чувствую, что должен написать эту статью. Наверняка будут ситуации, когда вы будете думать об изучении Laravel или когда вы будете спорить с некоторыми Laravel разработчиками. Итак, вот 6…
Лучшие книги о Django (на английском)
1. Django for APIs: Build web APIs with Python & Django
2. Two Scoops of Django 1.11: Best Practices for the Django Web Framework
3. Django for Professionals: Production websites with Python & Django
4. Django for Beginners: Build websites with Python and Django
5. Django 2 by Example
6. Django Design Patterns and Best Practices
7. Django Unleashed
8. Beginning Django E-Commerce
9. Lightweight Django 1st Edition
10. Practical Django 2 and Channels 2
1. Django for APIs: Build web APIs with Python & Django
2. Two Scoops of Django 1.11: Best Practices for the Django Web Framework
3. Django for Professionals: Production websites with Python & Django
4. Django for Beginners: Build websites with Python and Django
5. Django 2 by Example
6. Django Design Patterns and Best Practices
7. Django Unleashed
8. Beginning Django E-Commerce
9. Lightweight Django 1st Edition
10. Practical Django 2 and Channels 2
#useful_stuff
Наследование абстрактного базового класса
Этот стиль используется, когда вы хотите, чтобы родительский класс содержал информацию, которую вы не хотите вводить для каждой дочерней модели.
В таблице Custmoer у нас есть поля: name, email, addess и phone.
В таблице Staff есть поля: name, email, address и position.
Таблица базового класса не создается в этом наследовании.
Наследование абстрактного базового класса
Этот стиль используется, когда вы хотите, чтобы родительский класс содержал информацию, которую вы не хотите вводить для каждой дочерней модели.
# models.py
from django.db import models
# Create your models here.
class ContactInfo(models.Model):
name=models.CharField(max_length=20)
email=models.EmailField(max_length=20)
address=models.TextField(max_length=20)
class Meta:
abstract=True
class Customer(ContactInfo):
phone=models.IntegerField(max_length=15)
class Staff(ContactInfo):
position=models.CharField(max_length=10)
# admin.py
admin.site.register(Customer)
admin.site.register(Staff)
Когда мы переносим эти изменения, в базе данных создаются две таблицы. В таблице Custmoer у нас есть поля: name, email, addess и phone.
В таблице Staff есть поля: name, email, address и position.
Таблица базового класса не создается в этом наследовании.
#useful_stuff
Наследование многотабличной модели
Этот стиль используется, если вы разделяете существующую модель на подклассы и хотите, чтобы каждая модель имела свою собственную таблицу базы данных.
Oн создаст отношение модели один к одному для таблицы Restaurants из таблицы Place.
Наследование многотабличной модели
Этот стиль используется, если вы разделяете существующую модель на подклассы и хотите, чтобы каждая модель имела свою собственную таблицу базы данных.
# models.pyВ этом наследовании также создается таблица базового класса.
from django.db import models
# Create your models here.
class Place(models.Model):
name=models.CharField(max_length=20)
address=models.TextField(max_length=20)
def __str__(self):
return self.name
class Restaurants(Place):
serves_pizza=models.BooleanField(default=False)
serves_pasta=models.BooleanField(default=False)
def __str__(self):
return self.serves_pasta
# admins.py
from django.contrib import admin
from .models import Place,Restaurants
# Register your models here.
admin.site.register(Place)
admin.site.register(Restaurants)
Oн создаст отношение модели один к одному для таблицы Restaurants из таблицы Place.
#useful_stuff
Наследование прокси-модели
Этот стиль используется, если вы хотите только изменить поведение модели на уровне Python без изменения полей модели.
Вы наследуете от базового класса и можете добавлять свои собственные свойства, кроме полей.
Базовый класс не должен быть абстрактным классом.
Мы не можем использовать множественное наследование в прокси-моделях.
Основное использование - перезапись основных функций существующей модели.
В частности, любые новые экземпляры Person также будут доступны через MyPerson, и наоборот:
Наследование прокси-модели
Этот стиль используется, если вы хотите только изменить поведение модели на уровне Python без изменения полей модели.
Вы наследуете от базового класса и можете добавлять свои собственные свойства, кроме полей.
Базовый класс не должен быть абстрактным классом.
Мы не можем использовать множественное наследование в прокси-моделях.
Основное использование - перезапись основных функций существующей модели.
# models.py
from django.db import models
# Create your models here.
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
class MyPerson(Person):
class Meta:
proxy = True
def fullName(self):
return self.first_name + " " + self.last_name
Класс MyPerson работает с той же таблицей базы данных, что и его родительский класс Person.В частности, любые новые экземпляры Person также будут доступны через MyPerson, и наоборот:
In [1]: from MyApp.models import Person, MyPersonПосле добавления данных теперь мы можем получить доступ к first_name и last_name с помощью метода fullName() класса MyPerson.
In [2]: p = Person(first_name = "Anton", last_name = "Anton")
In [3]: p.save()
In [7]: myperson = MyPerson.objects.all()[0]
In [8]: myperson.fullName()
Out[8]: 'Anton Anton'Поднимаем Debian сервер для Python/Django — установка и настройка с нуля. Как настроить сервер?
https://www.youtube.com/watch?v=FLiKTJqyyvs
https://www.youtube.com/watch?v=FLiKTJqyyvs
YouTube
Поднимаем Debian сервер для Python/Django — установка и настройка с нуля. Как настроить сервер?
Мой курс «Хардкорная веб-разработка» — https://course.to.digital
Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: https://botanim.to.digital/
Telegram: https://t0digital.t.iss.one
Сказать спасибо за это видео можно здесь — https://boosty.to/digitalize.team…
Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: https://botanim.to.digital/
Telegram: https://t0digital.t.iss.one
Сказать спасибо за это видео можно здесь — https://boosty.to/digitalize.team…
Отличный курс о том, как сделать интернет-магазин на Django
https://www.youtube.com/watch?v=_ELCMngbM0E&list=PL-51WBLyFTg0omnamUjL1TCVov7yDTRng
https://www.youtube.com/watch?v=_ELCMngbM0E&list=PL-51WBLyFTg0omnamUjL1TCVov7yDTRng
YouTube
Django Ecommerce Website | Setup & Templates | Part 1
Check out my Python Django Course!
https://dub.sh/FW7eg3Q
Fully functional ecommerce website with user and guest checkout capabilities.
Django + React Ecommerce Course Availible on udemy: https://www.udemy.com/course/django-with-react-an-ecommerce-website/…
https://dub.sh/FW7eg3Q
Fully functional ecommerce website with user and guest checkout capabilities.
Django + React Ecommerce Course Availible on udemy: https://www.udemy.com/course/django-with-react-an-ecommerce-website/…
MongoDB становится все более популярным. И я считаю это правильным, потому что за NoSQL будущее.
Итак, как насчет нас (django разработчиков ), есть ли у нас способ использовать MongoDB?
Ну, у нас нет одного, у нас их 3. Если вам интересно, то читайте подробнее здесь.
Итак, как насчет нас (django разработчиков ), есть ли у нас способ использовать MongoDB?
Ну, у нас нет одного, у нас их 3. Если вам интересно, то читайте подробнее здесь.
Telegraph
Как использовать Django с MongoDB
Без лишних слов я расскажуо преимуществах использования MongoDB с Django: Каждую секунду из различных источников, таких как чаты, ленты новостей и опросы, генерируется все больше и больше неструктурированных данных. Данные необходимо надежно хранить в масштабируемой…
Лучшие каналы o Django на YouTube (на английском языке):
- CodingEntrepreneurs
- Corey Schafer
- Dennis Ivy
- Programming with Harry
- Codemy .com
- Code With Stein
- Very Academy
- Telusko
- CodingEntrepreneurs
- Corey Schafer
- Dennis Ivy
- Programming with Harry
- Codemy .com
- Code With Stein
- Very Academy
- Telusko
#useful_stuff
Вкратце о MongoDB:
Вкратце о MongoDB:
import pymongo
#connect_string = 'localhost'
from django.conf import settings
my_client = pymongo.MongoClient(connect_string, 27017)
# Сначала определите имя базы данных
dbname = my_client['sample_medicines']
# Теперь получите / создайте имя коллекции (помните, что вы увидите базу данных в своем кластере mongodb только после создания коллекции
collection_name = dbname["medicinedetails"]
# давайте создадим два документа
medicine_1 = {
"medicine_id": "RR000123456",
"common_name" : "Paracetamol",
"scientific_name" : "",
"available" : "Y",
"category": "fever"
}
medicine_2 = {
"medicine_id": "RR000342522",
"common_name" : "Metformin",
"scientific_name" : "",
"available" : "Y",
"category" : "type 2 diabetes"
}
# Вставьте документы
collection_name.insert_many([medicine_1,medicine_2])
# Проверить count
count = collection_name.count()
print(count)
# Прочтите документы
med_details = collection_name.find({})
# Распечатать в терминале
for r in med_details:
print(r["common_name"])
# Обновить один документ
update_data = collection_name.update_one({'medicine_id':'RR000123456'}, {'$set':{'common_name':'Paracetamol 500'}})
# Удалить один документ
delete_data = collection_name.delete_one({'medicine_id':'RR000123456'})Очень полезное видео
Динамический поиск объектов в админке (ForeignKey, ManyToMany, CharField) с помощью ajax.
https://www.youtube.com/watch?v=o_Hh1QzBbAo&ab_channel=PyCoding
Динамический поиск объектов в админке (ForeignKey, ManyToMany, CharField) с помощью ajax.
https://www.youtube.com/watch?v=o_Hh1QzBbAo&ab_channel=PyCoding
YouTube
Динамический поиск объектов в админке (ForeignKey, ManyToMany, CharField) с помощью ajax.
#django#python
Бросить чеканную монету: https://www.donationalerts.com/r/pycoding
====================================
Группа в VK: https://vk.com/pycoding
====================================
Канал в Telegram: https://t.iss.one/PyCoding1
==================…
Бросить чеканную монету: https://www.donationalerts.com/r/pycoding
====================================
Группа в VK: https://vk.com/pycoding
====================================
Канал в Telegram: https://t.iss.one/PyCoding1
==================…
Личный совет от меня - изучайте Celery и Reddis.
Эти технологии необходимы. Также попробуйте сделать что-нибудь с Django channels, например мессенджер.
Оптимизация приложений Django - необходимость, также необходимо упростить работу для других.
(Это даст вам огромное преимущество перед другими кандидатами на работе, и начальник высоко оценит.)
Эти технологии необходимы. Также попробуйте сделать что-нибудь с Django channels, например мессенджер.
Оптимизация приложений Django - необходимость, также необходимо упростить работу для других.
(Это даст вам огромное преимущество перед другими кандидатами на работе, и начальник высоко оценит.)
#Уроки
Как отрендерить форму вручную (2-я часть).
Здесь мы используем кастомные атрибуты html, виджеты, bootstrap и django-widget-tweaks.
Читай статью ниже👇
Как отрендерить форму вручную (2-я часть).
Здесь мы используем кастомные атрибуты html, виджеты, bootstrap и django-widget-tweaks.
Читай статью ниже👇
Telegraph
Как отрендерить форму вручную
Расширение полей формы Мы все еще можем копнуть глубже и расширить разметку {{field}} (или, если вы делаете это индивидуально, это будут, например, поля {{form.name}} или {{form.email}}). Но теперь все становится немного сложнее, потому что мы говорим о виджетах.…
Классное видео о том, как использовать Django с Data Science
https://www.youtube.com/watch?v=RGjJmi36dno
https://www.youtube.com/watch?v=RGjJmi36dno
#Задачи
Интересное задание:
Подключите elastic search и mongo к любому из ваших django проектов.
Сделайте несколько простых запросов и ответьте на вопрос: когда и почему мы используем elasitc search, mongo и postgres?
Интересное задание:
Подключите elastic search и mongo к любому из ваших django проектов.
Сделайте несколько простых запросов и ответьте на вопрос: когда и почему мы используем elasitc search, mongo и postgres?