рдпрд╣ рдкреЛрд╕реНрдЯ рдкрд╛рдпрдерди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмреАрдЪ рд▓реЛрдХрдкреНрд░рд┐рдп Django 1.7 рдврд╛рдВрдЪреЗ рдХреЗ рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд░рд┐рд▓реАрдЬ рдХреЛ рд╕рдореБрджрд╛рдп рдФрд░ рдореБрдЦреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреЛрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - Django 1.0 рдХреА рд░рд┐рд▓реАрдЬ рдХреЗ рдмрд╛рдж рд╕реЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░рд┐рд▓реАрдЬ рдХреЗ рд░реВрдк рдореЗрдВред
рд╕рдВрд╕реНрдХрд░рдг 1.7 рдореЗрдВ рдирд╡рд╛рдЪрд╛рд░
рдЕрдЬрдЧрд░ 2.6 рдХреЛ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реИред рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг 2.7 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдЕрдм рд╕рдорд░реНрдерд┐рдд рд╣реИред рдкрд╛рдпрдерди 3.4 рдХреЗ рд▓рд┐рдП рдШреЛрд╖рд┐рдд рд╕рдорд░реНрдердиред
рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╕рдорд░реНрдерди рдХреЛ рд╕реАрдзреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рд▓реЛрдХрдкреНрд░рд┐рдп рджрдХреНрд╖рд┐рдг рдмреИрдЯрд░реА рдХреЗ рд▓реЗрдЦрдХ
рдПрдВрдбреНрд░рдпреВ рдЧреЙрдбрд╡рд┐рди рдХрд╛ рд╢реБрдХреНрд░рд┐рдпрд╛ рдЕрджрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
Syncdb рдХрдорд╛рдВрдб рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ Django 1.9 рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рддрдм рддрдХ, syncdb рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдирд╛рдо рд╣реИ, рдЬреЛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдФрд░ рдкреБрд░рд╛рдиреЗ syncdb рд╡реНрдпрд╡рд╣рд╛рд░ рджреЛрдиреЛрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
Init_data рдЬреБрдбрд╝рдирд╛рд░ рдЕрдм рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЖрд░рдВрднрд┐рдХ рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рдЦреБрдж рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рд╕реНрддрд░ рдкрд░ рдлрд┐рдХреНрд╕рд┐рдВрдЧ рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИред
рдЖрд╡реЗрджрди рдХреЛ
рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ - рдкреВрд░реНрдг рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рдЕрдзреАрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдирддреАрдЬрддрди, рдЖрдк рдореЙрдбрд▓-рдереНрд░реЗрдб рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдиреЗ рдкрд╣рд▓реЗ рдЖрд╡реЗрджрди рдХреА рдкрд╣рдЪрд╛рди рдХреА рдереА рдФрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред
рдЙрдк-
рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдирдП рддрд░реАрдХреЗред рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдЖрд╡рд╢реНрдпрдХ рдбрд┐рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯ () рд╡рд┐рдзрд┐ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ Django рдореЗрдВ рдкрд▓рд╛рдпрди рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рджреЛрд╖ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдорд╛рдирдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИ рдФрд░ __init__ рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИред
рдЕрдм рдЖрдк рд╕реАрдзреЗ рдкреНрд░рдмрдВрдзрдХ рд╕реЗ
QuerySets рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
class FoodQuerySet(models.QuerySet): def pizzas(self): return self.filter(kind='pizza') def vegetarian(self): return self.filter(vegetarian=True) class Food(models.Model): kind = models.CharField(max_length=50) vegetarian = models.BooleanField() objects = FoodQuerySet.as_manager() Food.objects.pizzas().vegetarian()
рдореЙрдбрд▓ рдмрдВрдзрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рдмрдВрдзрдХ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛:
class Blog(models.Model): pass class Entry(models.Model): blog = models.ForeignKey(Blog) objects = models.Manager()
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдирдИ рдкреНрд░рдгрд╛рд▓реА, (рд╕рд┐рд╕реНрдЯрдо рдЪреЗрдХ), рдЬреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреА рд╣реИ рдФрд░ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдФрд░ рдХреИрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рд╣реИред рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП, рдПрдХ рдирдпрд╛ рдЪреЗрдХ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдорд╛рдиреНрдп рдХрдорд╛рдВрдб рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред
рдЙрдиреНрдирдд рдкреНрд░реАрдлрд╝реИрдЪ_рд░реЗрдЯреЗрдб рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдирдпрд╛
рдкреНрд░реАрдлрд╝реИрдЪ ред рдЕрдм рдЖрдк QuerySets рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реАрдлрд╝реЗрдЯрд┐рдВрдЧ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рджрд┐рдирд╛рдВрдХ рд╡рд┐рдЬреЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдердиред рдкрд╣рд▓реЗ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЯрд╛рдЗрдо рдЬрд╝реЛрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрджрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдордп рдХреЗ рдмреАрдЪ рдХреЛрдИ рд╡рд┐рд╕рдВрдЧрддрд┐ рд╣реИ, рддреЛ рдПрдХ рджреГрд╢реНрдп рдкреНрд░реЙрдореНрдкреНрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред
рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд░реНрд╕рд░ рдХреЛ рдЕрдм рдПрдХ рд╕рдВрджрд░реНрдн рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рд╣реИ:
c = connection.cursor() try: c.execute(...) finally: c.close()
рдУрдЖрд░рдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ
рдЦреЛрдЬ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред
from django.db.models import IntegerField from django.db.models import Transform class AbsoluteValue(Transform): lookup_name = 'abs' def as_sql(self, qn, connection): lhs, params = qn.compile(self.lhs) return "ABS(%s)" % lhs, params IntegerField.register_lookup(AbsoluteValue)
рдЕрдиреНрдп рджрд┐рд▓рдЪрд╕реНрдк рдмрджрд▓рд╛рд╡
django.contrib.admin- рдЕрдм рдЖрдк рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ site_header, site_title рдФрд░ index_title рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- ModelAdmin.get_fields () рдкрджреНрдзрддрд┐ рдХреЛ ModelAdmin.fields рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рдореМрдЬреВрджрд╛ admin.site.register рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдирдП рд░рдЬрд┐рд╕реНрдЯрд░ () рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рдЖрдк рдЧреНрд░рд┐рдб рдореЗрдВ рд▓рд┐рдВрдХ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ModelAdmin.list_display_links = рдХреЛрдИ рднреА рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
- "рд╕рд╛рдЗрдЯ рдкрд░ рджреЗрдЦреЗрдВ" рдмрдЯрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЕрдкрдиреЗ ModelAdmin.view_on_site рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- Model_min_list_display рдХреЗ рд▓рд┐рдП рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛, admin_order_field рдореЗрдВ рдПрдХ рд╣рд╛рдЗрдлрд╝рди рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ред
- рдореЙрдбрд▓ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ModelAdmin.get_changeform_initial_data () рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
django.contrib.auth- ** email_user () рдХреЛ рднреЗрдЬреЗ рдЧрдП kwargs рднреА send_mail () рдореЗрдВ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред
- рдЕрдиреБрдорддрд┐_рдЖрдзрд╛рд░рд┐рдд () рдбреЗрдХреЛрд░реЗрдЯрд░ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдпрд╛ рдХреЗрд╡рд▓ рдПрдХ рдЕрдиреБрдорддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
- рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдиреАрддрд┐рдпреЛрдВ рдХреЛ рд╢реАрдШреНрд░рддрд╛ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдИ AuthenticationForm.confirm_login_allowed () рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
- django.contrib.auth.views.password_reset () рд╡реИрдХрд▓реНрдкрд┐рдХ html_email_template_name рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдкрд╛рд╕рд╡рд░реНрдб рд░реАрд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп html рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ AbstractBaseUser.get_session_auth_hash () рд╡рд┐рдзрд┐ред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЙрдбрд▓ рдХреЛ AbstractBaseUser рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╛рд╕рд╡рд░реНрдб рдмрджрд▓рдиреЗ рд╕реЗ рдЙрд╕рдХреЗ рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╕рддреНрд░ рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред
django.contrib.sitesрдИ-рдореЗрд▓рдлрд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ- рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ UploadedFile.content_type_extra , рдЬрд┐рд╕рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЗрдбрд░ рдореЗрдВ рдкрд╛рд░рд┐рдд рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
- рдирдИ FILE_UPLOAD_DIRECTORY_PERMISSIONS рд╕реЗрдЯрд┐рдВрдЧ рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдмрдирд╛рдИ рдЧрдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдкрд░ рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рд╕реЗрдЯрд┐рдВрдЧ FILE_UPLOAD_PERMISSIONS рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИ ред
- FileField.upload_to рдЕрдм рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред
рдЖрдХрд╛рд░- Textarea рдореЗрдВ рдЕрдм max_length рд╡рд┐рд╢реЗрд╖рддрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЕрдЧрд░ max_length рдХреЛ рдореЙрдбрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
- Field.choices рдЖрдкрдХреЛ рдПрдХ рдЦрд╛рд▓реА рдорд╛рди рдкрд░ рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ "-------" рд╣реИред
- рд╕реНрд╡рдЪреНрдЫ () рдкрджреНрдзрддрд┐ рдореЗрдВ, self.cleaned_data рдХреЛ рдЕрдм рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
- рдЕрдм рдЖрдк рдЙрдирдХреЗ рдирд╛рдо рдХреЛ рдХрд┐рд╕реА рдкрд░ рд╕реЗрдЯ рдХрд░рдХреЗ рдлреЙрд░реНрдо рд╕реЗ рдлрд╝реАрд▓реНрдб рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред
- рдирдпрд╛ add_error () рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
- рдкреНрд░рдкрддреНрд░ рдХреЗ рд╕реАрдорд╛рдВрдХрдХ рдХреЛ рдЕрдиреВрдареЗ, unique_for_date, рдФрд░ unique_t рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред
рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг- Django.middleware.locale.LocaleMiddleware.response_redirect_class рд╡рд┐рд╢реЗрд╖рддрд╛ рдЖрдкрдХреЛ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
- LocaleMiddleware рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рднрд╛рд╖рд╛ рджреНрд╡рд╛рд░рд╛ рдЪрдпрдирд┐рдд рднрд╛рд╖рд╛ рдХреЛ _language рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЖрдк рдирд┐рд░рдВрддрд░ LANGUAGE_SESSION_KEY рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рдмреНрд▓реЙрдХрдЯреНрд░рд╛рдВрд╕ рдЯреИрдЧ рдЫрдВрдЯрдиреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╢реБрд░реБрдЖрдд рд╕реЗ рдЕрдВрдд рддрдХ рдиреНрдпреВрд▓рд╛рдЗрди рд╡рд░реНрдгреЛрдВ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╕реЗ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИред рдЬреЛ рд▓реЛрдХрд▓ рдлрд╛рдЗрд▓реНрд╕ рдЬрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
- рдмреЗрд╣рддрд░ рд╕реБрдзрд╛рд░ред
- рдирд┐рдореНрди рднрд╛рд╖рд╛ рд╕реНрдерд┐рд░рд╛рдВрдХ рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВ: LANGUAGE_COOKIE_AGE, LANGUAGE_COOKIE_DOMAIN рдФрд░ LANGUAGE_COOKIE_PATHред
рдкреНрд░рдмрдВрдзрди рджрд▓- рдХрдВрд╕реЛрд▓ рдореЗрдВ рд░рдВрдЧ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред
- рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдбрдВрдк рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред
- рдХреНрд░рд┐рдпреЗрдЯреЗрдЪреЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЯреЗрдмрд▓ рдХреИрд╢ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЕрдм Django рдпрд╣ рдЦреБрдж рдХрд░рддрд╛ рд╣реИ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдХреИрд╢ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред
- рд░рдирд░ рдЯреАрдо рдХреЛ рд╕реБрдзрд╛рд░рд╛ рдЧрдпрд╛ рд╣реИред рдЕрдм, pyinotify рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде, рдкреБрдирдГ рд▓реЛрдб рдЧрддрд┐ рдЕрдзрд┐рдХ рд╣реЛ рдЧрдИ рд╣реИ, рдФрд░ рд▓реИрдкрдЯреЙрдк рдкрд░ рдХрдо рдмреИрдЯрд░реА рдХреА рдЦрдкрдд рд╣реЛрддреА рд╣реИред рд╕рд╛рде рд╣реА, рдХрдВрдкреНрд▓рд╛рдЗрд╕реЗрдЬ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╕рд░реНрд╡рд░ рд░рд┐рдмреВрдЯ рд╣реЛрддрд╛ рд╣реИред рдкреВрд░реНрд╡ рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЧрдП рд╕рднреА рд╕реНрдерд┐рд░ рдЕрдиреБрд░реЛрдз рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
рдЖрджрд░реНрд╢- рдирдИ QuerySet.update_or_create () рд╡рд┐рдзрд┐ред
- рдирдпрд╛ рдореЗрдЯрд╛ рд╡рд┐рдХрд▓реНрдк default_permissions рд╣реИ , рдЬреЛ рдЖрдкрдХреЛ рдмрдирд╛рдиреЗ / рд╕рдВрд╢реЛрдзрд┐рдд / рд╣рдЯрд╛рдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
- OneToOneField рдХреА рдЦреЛрдЬ рдЬрдм рдЕрдореВрд░реНрдд рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реАред
- Iexact рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЕрдиреБрд░реЛрдз рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдИ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред
- рдЕрдиреБрдХреНрд░рдореЛрдВ рдореЗрдВ рдПрдХрд▓ рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд╝реАрд▓реНрдб рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╕рдордп (рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рд╕реВрдЪреА рдирд╣реАрдВ)ред
- рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдм рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред рдкрд╣рд▓реЗ, рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдЕрдиреБрд░реЛрдз рдФрд░ рдЙрддреНрддрд░рдЙрдкрдпреЛрдЧрд┐рддрд╛рдПрдБрдпрд╣ рдкреЛрд╕реНрдЯ рд╡рд┐рдХрд╛рд╕ рдХреЗ рддрд╣рдд рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рд▓реЗрдЦрди рдХреА рдПрдХ рдирд┐: рд╢реБрд▓реНрдХ рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рд╕реВрдЪрдирд╛ рдХреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИред
рдЗрд╕рдореЗрдВ рдкреЛрд╕реНрдЯ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдФрд░ рд╡рд┐рд╕реНрддреГрдд рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдкреНрд░рд▓реЗрдЦрди рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдПрдВред