рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╢рд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред рдЙрдкрд╕реНрдерд┐рддрд┐ рдмрдврд╝ рд░рд╣реА рд╣реИ, рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рднрд╛рд░ рдмрдврд╝ рд░рд╣рд╛ рд╣реИ, рдФрд░ рд╣рдо рдХреИрд╢ рд╕реЗ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВред рдПрдХ рдЖрджрд░реНрд╢ рджреБрдирд┐рдпрд╛ рдореЗрдВ, рд╕рдВрднрд╡рдд: рдЗрд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ
USE_CACHE = True
рдХреЛ рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рдпрд╣ рд╕рдордп рдирд╣реАрдВ рдЖ рдЬрд╛рддрд╛, рддрдм рддрдХ рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╢рд░реАрд░ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред
рдЬрдм рд╣рдо Django рдореЗрдВ рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ: рдПрдХ
рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рд▓реЗрдВ рдЬреЛ рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рд╕рдм рдХреБрдЫ рдХрд░реЗрдЧрд╛, рдпрд╛ рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ред рдХрдИ рдЕрдиреНрдп рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдпрд╣рд╛рдВ рдЗрддрдирд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореМрдЬреВрджрд╛ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░рддрд┐рдмрдВрдз рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╕реБрд╡рд┐рдзрд╛рдПрдВ рд╣реИрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЬрд▓реНрджреА рд╕реЗ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ рдХрд┐ рдЕрдкрдиреЗ рджрдо рдкрд░ рдХреИрд╢рд┐рдВрдЧ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди
рд╣рдо
djangopackages.com рдкрд░
рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдХреНрдпрд╛ рдЦреБрд╢реА
рдорд┐рд▓рддреА рд╣реИ ред
Mancatch Django рдХреНрд╡реЗрд░реАрдЬрд╝ рддрд╛рдХрд┐ рд╕рднреА ORM рдЕрдиреБрд░реЛрдз рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреИрд╢ рд╣реЛ рдЬрд╛рдПрдВред рд╕реНрдерд╛рдкрдирд╛ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рд╣реИ: settings.py рдореЗрдВ рдХреБрдЫ рдирдИ рд▓рд╛рдЗрдиреЗрдВ, рдЕрдиреНрдпрдерд╛ рд╕рдм рдХреБрдЫ рд╕рдорд╛рди рд░рд╣рддрд╛ рд╣реИ, рдХреНрд╡реЗрд░реА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рдбреЗрдЯрд╛ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдкрд░ рдЕрдорд╛рдиреНрдп рд╣реИред
рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рд╡рд┐рдХрд▓рд╛рдВрдЧрддрд╛ рдЬреЙрдиреА рдХреА рдкреВрд░реА рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рдХреЛ рдирдХрд╛рд░ рд╕рдХрддреА рд╣реИред
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЯреЗрдмрд▓реНрд╕ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдорд╛рдиреНрдп рд╣реИрдВ ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ 9000 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВ, рддреЛ рдпрджрд┐ рдЖрдк рдЙрдирдореЗрдВ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдХреИрд╢ рд╕рднреА рдХреЗ рд▓рд┐рдП рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреЛ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдмрджрд▓рдиреЗ рд╡рд╛рд▓реА рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдХреИрд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░) - рдЕрдлрд╕реЛрд╕ред
ORM рдЕрдиреБрд░реЛрдз рднреА рдХреИрд╢ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдХреЗрд╡рд▓ рдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЛ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ,
.get()
рдЬреИрд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдХреИрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛
.values()
рдФрд░
.values_list()
ред рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдореЙрдбрд▓ рдореЗрдВ рдПрдХ рдорд┐рд╢реНрд░рдг рдФрд░ рдПрдХ рдкреНрд░рдмрдВрдзрдХ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╡рд┐рдХрд▓рд╛рдВрдЧрддрд╛ рдХреЛ рдпрдереЛрдЪрд┐рдд рд░реВрдк рд╕реЗ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ред рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп, рдХреЗрд╡рд▓ рдЙрди рдХреИрд╢реЗ рддрддреНрд╡реЛрдВ рдХреЛ, рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (
ForeignKey
рдФрд░
ManyToMany
рдЬреИрд╕реЗ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП)ред
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА
.get()
рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдХреИрд╢ рдХрд░рддрд╛ рд╣реИред рдХреНрд╡реЗрд░реА рдХреЛ рдХреИрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
cache()
рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдкрдиреЗ рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдЕрдХреНрд╖рдорддрд╛ рд▓рдЧрднрдЧ Django рдХреИрд╢ рдорд╢реАрди рдХреЗ рд╕рдорд╛рди рд╣реИред
ManyToMany
рдкрд░рд┐рд╡рд░реНрддрди рджреНрд╡рд╛рд░рд╛ рдЕрдХреНрд╖рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░
Django рдХреИрд╢ рдорд╢реАрди рдФрд░ Django-cachebot рд╕реНрд╡реАрдХрд╛рд░реНрдп рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЙрдиреА рдХреИрд╢ рд╡рд┐рдХрд▓рд╛рдВрдЧрддрд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдВрдзрд╛рдзреБрдВрдз рд╣реИ, рдореИрдВ рдЗрд╕рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
- рд╡рд╕реНрддреБрддрдГ рд╡рд┐рдХрд▓рд╛рдВрдЧрддрд╛ рдкрд░ рдХреЛрдИ рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рд╣реИред рдмрд╣реБрдд рдмрд╛рд░ рдЗрд╕рдХреА рдЬрд░реВрд░рдд рдкрдбрд╝ рд╕рдХрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рд▓реЗрдЦреЛрдВ (рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рд╛рдордЧреНрд░реА) рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдЗрдЯ рд╣реИред рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рдкреГрд╖реНрда рд╣реИ, рдХреЗрд╡рд▓ рд╢реАрд░реНрд╖ рд▓реЗрдЦ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рд╣реИрдВред рдХреНрдпрд╛ рд▓реЗрдЦ рд╕реВрдЪреА рдХреИрд╢ рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдпрджрд┐ рдХреБрдЫ рд▓реЗрдЦ рдХрд╛ рдкрд╛рда рдмрджрд▓рддрд╛ рд╣реИ (рд╢реАрд░реНрд╖рдХ рд╕рдорд╛рди рд░рд╣рддрд╛ рд╣реИ)? рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рддрд░рд╣ рдХреБрдЫ рдХреЛ рд╕рдордЭрд╛рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
- рд▓рдЧрднрдЧ рд╕рднреА рдРрдкреНрд╕ рдХреА рдХреБрдЫ рд╕реАрдорд╛рдПрдБ рд╣реЛрддреА рд╣реИрдВред рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдХреИрд╢ рдПрдХрддреНрд░реАрдХрд░рдг рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреЛрдИ рдХреЙрд▓
.get()
рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдХреЛрдИ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрдорд╛рдиреНрдп рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдРрд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВ, рддреЛ рд╢рд╛рдпрдж рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдЕрднреА рднреА рдмрд╣реБрдд рдХреБрдЫ рдЦреБрдж (рдпрд╛ рдЕрдкрдиреЗ рдЖрдк) рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред
рдпрджрд┐ рдРрд╕реА рдЪреАрдЬреЗрдВ рдЖрдкрдХреЛ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ, рддреЛ рдЯрд░реНрдирдХреА рд╕рдорд╛рдзрд╛рди рдЖрдкрдХреЗ рд▓рд┐рдП рд╣реИрдВред рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдЖрдк рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдХреИрд╢рд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдЧреЗ рдмрдврд╝реЗрдВред
рдЦреБрдж рдХрд░ рд▓реЛ
рд╡рд╛рд╕реНрддреБ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рджреЛ рдЪреАрдЬреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рддрд░реНрдХ рд╣реИ: рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдХреИрд╢ рдореЗрдВ рдбреЗрдЯрд╛ рджреЗрддреЗ рд╣реИрдВ, рдпрджрд┐ рдХреЛрдИ рд╣реИ, рддреЛ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╣рдо рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд▓реЗрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдХреИрд╢ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рджреЗрддреЗ рд╣реИрдВред рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓рд╛рдВрдЧрддрд╛ рдХрд╛ рддрд░реНрдХ рд╣реИред
рд╣рдореЗрдВ рдбреЗрдЯрд╛ рдорд┐рд▓рддрд╛ рд╣реИ
рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИ:
cached = cache.get('my_key') if cached is not None: return cached result = make_heavy_query() cache.set('my_key', result) return result
рдкреНрд░рд╢реНрди : рдбреЗрдЯрд╛ рдХреЛ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ (рдЕрдирдВрдд рдЯрд╛рдЗрдордЖрдЙрдЯ)?
рдП : рдПрдХ рдмреИрдХрдПрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛
рдкреНрд░рд╢реНрди : рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореИрдВ рдХреИрд╢ рдореЗрдВ
None
рд╕реНрдЯреЛрд░
None
рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛?
рдП :
рдкреНрд░рд▓реЗрдЦрди рдкрдврд╝реЗрдВ рдФрд░ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рдХреЗ рдмрдЬрд╛рдп рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
cached = cache.get('my_key', -1) if cached != -1:
рдХреИрд╢ рд╕реЗ рдЬреБрдбрд╝реЗ рдХреЛрдб рдХреЛ рдХрд╣рд╛рдВ рд░рдЦреЗрдВ?
рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдПрдХ рд╕реНрдерд╛рди рдкрд░ рд░рдЦрдирд╛ рд╣реИ, рди рдХрд┐ рдЗрд╕реЗ рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдлреИрд▓рд╛рдирд╛ рд╣реИред рдореЗрд░реА (рдФрд░ рдХреЗрд╡рд▓ рдореЗрд░реА) рд░рд╛рдп рдореЗрдВ, рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╕реНрдерд╛рди рд╕рдВрдЧрдд рдореЙрдбрд▓ рдХрд╛ рдкреНрд░рдмрдВрдзрдХ рд╣реИред рдЖрдк
MyModel.objects
рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ
MyModel.cached
рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдХреНрд╕рд░ рдЖрдкрдХреЛ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд╕реНрддреБрдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЯреИрдЧ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЙрдбрд▓ рдкрджреНрдзрддрд┐ рдореЗрдВ рдХреИрд╢рд┐рдВрдЧ рдХреЛрдб рдбрд╛рд▓рдиреЗ рдХрд╛ рдПрдХ рдкреНрд░рд▓реЛрднрди рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд╕рдВрдЧрдд рд╣реЛрдиреЗ рдФрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВред рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореЙрдбрд▓ рдореЗрдВ, рдкреНрд░рдмрдВрдзрдХ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВ:
class Article(models.Model):
рдбрд╛рдЯрд╛ рдХреИрд╕реЗ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ?
рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдореЙрдбрд▓ рдХреЛ рд╡реИрд╕реЗ рд╣реА рдХреИрд╢реНрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╡реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реАрд░рд┐рдпрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВред рд╕рднреА рддрд░реАрдХреЗ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рдЬреИрд╕реЗ
get_FOO_display
ред рдХреЗрд╡рд▓ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд╕реНрддреБрдПрдВ (
ForeignKey
рдФрд░
ManyToMany
) рдХреИрд╢ рдореЗрдВ рдирд╣реАрдВ
ManyToMany
, рдФрд░ рдЬрдм рдЖрдк рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ, рддреЛ рдЖрдзрд╛рд░ рдлрд┐рд░ рд╕реЗ рдЬреБрдбрд╝ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ (рдКрдкрд░ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ)ред
рдпрджрд┐ рдЖрдкрдХреЛ рдХреНрд╡реЗрд░реА рдХреЛ рдХреИрд╢ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдкрд╣рд▓реЗ рдЗрд╕реЗ рд╕реВрдЪреА рдореЗрдВ рд▓рд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдпрд╣ рднреА рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣
Django рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЧрддрддрд╛ рдореБрджреНрджреЛрдВ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЫреЛрдЯреА рд╣реИ рдФрд░ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдмрджрд▓рддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢рд╣рд░реЛрдВ, рд╕рдВрдХрд╛рдпреЛрдВ, рдЖрджрд┐ рдХреА рд╕реВрдЪреА) рдФрд░ рддрддреНрд╡реЛрдВ рдХрд╛ рдХреНрд░рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд░реВрдк рдореЗрдВ, рдЗрд╕ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
dict((x.id, x) for x in MyModel.objects.all())
рдпрд╣ рдХреИрд╢ рдореЗрдВ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдХрднреА-рдХрднреА рдпрд╣ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХреЗрд╡рд▓ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЕрдкрдиреЗ рдХреИрд╢ рдХреЛ рджреВрд╕рд░реЗ
get_many
рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред рдкреНрд▓рд╕: рдЕрдорд╛рдиреНрдпрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗрд╡рд▓ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рд╕реВрдЪреА рдЖрдЗрдЯрдо рдХреА рд╕рдВрд░рдЪрдирд╛ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ, рдЕрд░реНрдерд╛рдд рдХрдо рдмрд╛рд░ред рдХрдо: рдХрднреА-рдХрднреА рдкреНрд▓рд╕ рд╕реЗ рдХреЛрдИ рд▓рд╛рдн рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдБ, рд╢рд╛рдпрдж, рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ "10 рд╣рд╛рд▓ рдХреЗ рд▓реЗрдЦ" рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдЖрдИрдбреА рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕ рд╕реВрдЪреА рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрджрд┐ рд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рдирдпрд╛ рд▓реЗрдЦ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдЗрд╕ рд╕реВрдЪреА рд╕реЗ рдХреБрдЫ рд▓реЗрдЦ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╡рд╕реНрддреБрдУрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд▓реЗрдЦ рдореЗрдВ рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЯрд╛рдЗрдкреЛ рдХреЛ рд╕рд╣реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред рджреВрд╕рд░реА рдУрд░, рдпрджрд┐ рд▓реЗрдЦреЛрдВ рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ рдХреЛрдИ рд▓рд╛рдн рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд┐рдзрд┐ рд╣рд░ рдЬрдЧрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред
рдирд╛рдо рдХреИрд╕реЗ рд░рдЦреЗрдВ?
рдпрджрд┐ рд╣рдо рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдиреВрдард╛ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА, рддреЛ рд╣рдо рдЖрдкрдХреА рдкрд╕рдВрдж рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреБрдВрдЬреА рдХреЛ рдирд╛рдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
'articles'
ред рдЖрдкрдХреЛ рд╣рд░ рдмрд╛рд░,
рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдПрдХ рдЕрдиреЛрдЦрд╛ рдЙрдкрд╕рд░реНрдЧ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ рдХреБрдВрдЬреА рдирд╛рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдкрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдХреНрд╕рд░ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ:
'article::%d'
ред рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдмреЗрд╣рддрд░ рд╣реИ:
'article::%(id)d'
ред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, "рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рдкреВрд░рд╛", рджреВрд╕рд░реЗ рдореЗрдВ - рдПрдХ рдкрд╣рдЪрд╛рдиред рдпрд╛
'tags_for::%d'
рдФрд░
'tags_for::%(article_id)d'
ред рдпрджрд┐ рдпрд╣ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЖрдкрдХреЛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ, рддреЛ
рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд╣реИ ред
рд░рджреНрдж рдХрд░рдирд╛
рд╡рд┐рдХрд▓рд╛рдВрдЧрддрд╛ рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд┐рдЧреНрдирд▓ рдХреЛрдб рдХреЛ рдХрд╣реАрдВ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП
@staticmethod
рдХрд╛ рдореЙрдбрд▓ рд╡рд░реНрдЧ рдкрд╕рдВрдж рд╣реИред рд╡рд┐рдХрд▓рд╛рдВрдЧрддрд╛ рдЕрдХреНрд╕рд░ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡реА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
@receiver(post_save, sender=Article) @receiver(pre_delete, sender=Article) def invalidate(instance, **kwargs): cache.delete('article::%(id)d' % {'id': instance.id})
рдЖрдЦрд┐рд░рдХрд╛рд░, рдЖрдк рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ!
@receiver(post_save, sender=Article) def on_change(instance, **kwargs): cache.set('article::%(id)d' % {'id': instance.id}, instance) @receiver(pre_delete, sender=Article) def on_delete(instance, **kwargs): cache.delete('article::%(id)d' % {'id': instance.id})
рдЬрдм рдПрдХ рдирдП рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддреЛ рдПрдХ рдореВрд▓реНрдп рдХреНрдпреЛрдВ рд╣рдЯрд╛рдПрдВ? рд╣рдо рдХреНрд╡реЗрд░реА рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ рдФрд░ рдбреЙрдЧрдкрд╛рдЗрд▓ рдкреНрд░рднрд╛рд╡ рдХреЗ рдЦрд┐рд▓рд╛рдл рдмреАрдорд╛ рдХрд░рддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рдЕрдм рдЖрдкрдХреЛ рджреЛ рд╣реИрдВрдбрд▓рд░ рдЪрд╛рд╣рд┐рдП: рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛ рдРрд╕рд╛ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рд╡рд┐рдХрд▓рд╛рдВрдЧрддрд╛ рдХрдИTMMany
рдкреНрд░рддреНрдпреЗрдХ
ManyToManyField
рдХреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд
ManyToManyField
рд▓рдЯрдХрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
@receiver(m2m_changed, sender=Article.tags.through) def on_tags_changed(instance, **kwargs): # do update / invalidation
рдХреИрд╢рд┐рдВрдЧ ModelChoiceField рдФрд░ ModelMultipleChoiceField
Django рдХреЗ рдкрд╛рд╕ рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдХреИрд╢ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИред рддреЛ, рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдкрд╛рджрди рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдиреЗрддреГрддреНрд╡ рдХрд░реЗрдВрдЧреЗред рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ
ChoiceField
рдФрд░
ChoiceField
рд╕рд╛рде рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ
MultipleChoiceField
рдХреНрд░рдорд╢рдГ (рдХреБрдЫ рддрд░реНрдХ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ), рдпрд╛ рдЖрдк
рдореЗрд░реЗ рдЫреЛрдЯреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Django 1.2-1.4 рдкрд░ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдпрд╣рд╛рдВ рдХреНрд░реВрд╕ рдкрд░ рдирд╣реАрдВ рдЪрдврд╝реВрдВрдЧрд╛, рд╕рдм рдХреБрдЫ рд▓рд┐рдВрдХ рдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИред
рдХрднреА рднреА рдХреИрд╢ рдХреА рджреГрдврд╝рддрд╛ рдкрд░ рднрд░реЛрд╕рд╛ рди рдХрд░реЗрдВ!
рдЕрдВрдд рдореЗрдВ, рджреГрдврд╝рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рд╢рдмреНрдж рдмрд╣реБрдд рд╣реА рдЪрддреБрд░ рджрд┐рдЦрддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЖрдк рдХреИрд╢ рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдХреБрд▓ рджреЛ рдЪреАрдЬреЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд╡рд╣рд╛рдВ рд╕реЗ рдкрдврд╝реЗрдВ рдФрд░ рд╡рд╣рд╛рдВ рдПрдХ рдирдпрд╛ рдЕрд░реНрде рд▓рд┐рдЦреЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрднреА рднреА рдХреИрд╢ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рди рдХрд░реЗрдВ:
mylist = cache.get('mylist') mylist.append(value) cache.set('mylist', mylist)
рдпрд╣ рдСрдкрд░реЗрд╢рди рдкрд░рдорд╛рдгреБ рдирд╣реАрдВ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЗрд╕ рдмрд╛рдд рдХреА рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рджреЛ рдЧреНрд░рд╛рд╣рдХ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕реВрдЪреА рдирд╣реАрдВ рдмрджрд▓реЗрдВрдЧреЗред рдФрд░ рдЬрдм рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдПрдХ рд░рд╛рдд рдХреА рдиреАрдВрдж рдмрд┐рддрд╛рдПрдВрдЧреЗ рдФрд░ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЧрд▓рдд рдбреЗрдЯрд╛ рдХреНрдпреЛрдВ рд╣реИред рддреЛ рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ рдирд╣реАрдВ рдмреЗрд╢рдХ, рдЖрдк рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреА
cache.incr()
рдмреИрдХрдПрдВрдб рджреНрд╡рд╛рд░рд╛ рдЧрд╛рд░рдВрдЯреА рджреА рдЬрд╛рддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
cache.incr()
/
cache.decr()
рд▓рд┐рдПред
рдирд┐рд╖реНрдХрд░реНрд╖
рдпрджрд┐ рдЙрдкрд░реЛрдХреНрдд рдореЗрдВ рдХреБрдЫ рдЗрд╖реНрдЯрддрдо рдпрд╛ рдЧрд▓рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВ, рдореИрдВ рд▓реЗрдЦ рдХреЛ рд╕рд╣реА рдХрд░реВрдВрдЧрд╛ред рд╡рд╣ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЙрд╕рдХреЗ рдкрд╛рдардХреЛрдВ - рдЦреБрд╢ред рдЖрдкрдХрд╛ рдзрдиреНрдпрд╡рд╛рдж