рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗрд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, django рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреЛрдб рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд▓реЗрдЦ рдХрд╛ рдПрдХ рдореБрдлреНрдд рдЕрдиреБрд╡рд╛рджред рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛:
- рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореБрджреНрджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рд╣реИ
- рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддрд░реНрдХ рдХреЗ рд╕рдВрдЧрдарди рдкрд░ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ
- рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
- рдЬреЛ рдЕрдм рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдЦрд┐рд▓рд╛рдл рддрд░реНрдХ рд╣реИрдВ
рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рд▓реЗрдЦ рдЬреНрдпрд╛рджрд╛рддрд░ рдмрд╣рд╕ рдХрд╛ рдореБрджреНрджрд╛ рд╣реИред Enzhoy)
рдореЛрдЯреЗ рдореЙрдбрд▓редрдкрд░рд┐рдЪрдп
рдЗрд╕ рд░реВрдкрд░реЗрдЦрд╛ рдкрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ django рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХреЛрдб рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреБрд░рд╛ рдЙрджрд╛рд╣рд░рдг рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдмрдбрд╝реЗ / рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЛрдб рд╕рдВрд░рдЪрдирд╛, рдРрд╕реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдЦреАрдВрдЪреА рдЧрдИ, рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдЧреИрд░-рддреБрдЪреНрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рдХрдард┐рди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреА рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ, рд╢рд╛рдпрдж рд╣реА рдХрднреА рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛, рдЬреЛ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ, рдЖрдкрдХреЛ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧреЗрдЧрд╛ред
Django рдореЗрдВ MVC = MTV + рдПрдореНрдмреЗрдбреЗрдб C
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрднреА рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдХрд┐ рдПрдордЯреАрд╡реА django рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ RoR рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП? рдХреЛрдИ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рджреГрд╢реНрдп рд╣реИрдВ, рдФрд░ рджреГрд╢реНрдп рдирд┐рдпрдВрддреНрд░рдХ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдПрдХ django рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд URL рд░рд╛рдЙрдЯрд░ рд╣реИ рдЬреЛ рдЕрдиреБрд░реЛрдз-рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рддрд░реНрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╕рд╣реА рдкреИрдЯрд░реНрди рдореЗрдВ рд╕рд╣реА рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдФрд░ рдкреНрд░рд╕реНрддреБрддрд┐рдпрд╛рдБ рдорд┐рд▓рдХрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдПрдХ "рдкреНрд░рд╕реНрддреБрддрд┐" рдкрд░рдд рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВред
рдРрд╕реЗ рдПрдордЯреАрд╡реА рдХреЗ рдХрдИ рдлрд╛рдпрджреЗ рд╣реИрдВ - рдЗрд╕рдХреА рдорджрдж рд╕реЗ, рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рдареЗрда рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рди рдХреЗрд╡рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рдиред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдХрд╣рд╛рдБ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХрд┐рди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХреЛрдб рдХреЛ рд╕рд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЖрдЗрдП рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВ рдФрд░ рдЙрдирдХреЗ рдЖрд╡реЗрджрди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рджреЗрдЦреЗрдВред
рджреГрд╢реНрдп рдореЗрдВ рддрд░реНрдХ
рджреГрд╢реНрдп рдореЗрдВ рд╕рднреА рдпрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рддрд░реНрдХ рд░рдЦреЗрдВред рд╡рд┐рднрд┐рдиреНрди рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдФрд░ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
def accept_quote(request, quote_id, template_name="accept-quote.html"): quote = Quote.objects.get(id=quote_id) form = AcceptQuoteForm() if request.METHOD == 'POST': form = AcceptQuoteForm(request.POST) if form.is_valid(): quote.accepted = True quote.commission_paid = False
рдпрд╣ рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдЖрдХрд░реНрд╖рдХ рд╣реИ - рд╕рднреА рдХреЛрдб рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╣реИрдВ, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдорд╕реНрддрд┐рд╖реНрдХ рдХреЛ рддрдирд╛рд╡ рджреЗрдиреЗ рдФрд░ рд╡рд╣рд╛рдВ рдХреБрдЫ рд╕рд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рдкрдардиреАрдпрддрд╛ рдХрд╛ рдиреБрдХрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред рдореБрдЭреЗ рдкрд╛рдБрдЪ рд╕реМ рд▓рд╛рдЗрдиреЛрдВ рдХреА рдХреЛрдб рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рд╕реМрднрд╛рдЧреНрдп рдорд┐рд▓рд╛, рдЬрд╣рд╛рдБ рд╕реЗ рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рднреА рдЪреАрдХрдмреЛрдиреНрд╕ рдЙрддрд╛рд░реЗ рдФрд░ рдЙрдирдХреА рдореБрдЯреНрдареА рдмрд╛рдБрдзреАред рдореЛрдЯреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рд╕реЗ рдХреЛрдб рдХреА рджреЛрд╣рд░рд╛рд╡ рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдбреАрдмрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рддреЛрдбрд╝рдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред
рд░реВрдкреЛрдВ рдореЗрдВ рддрд░реНрдХ
Django рдореЗрдВ рдкреНрд░рдкрддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рд╣реЛрддреЗ рд╣реИрдВ, рд╡реЗ рдбреЗрдЯрд╛ рдХреЛ рдорд╛рдиреНрдп рдФрд░ рд╕рд╛рдлрд╝ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рддрд░реНрдХ рдХрд╛ рд╕реНрдерд╛рди рднреА рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
def accept_quote(request, quote_id, template_name="accept-quote.html"): quote = Quote.objects.get(id=quote_id) form = AcceptQuoteForm() if request.METHOD == 'POST': form = AcceptQuoteForm(request.POST) if form.is_valid():
рдкрд╣рд▓реЗ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдм рднреБрдЧрддрд╛рди рд╕реНрд╡реАрдХреГрддрд┐ рдлреЙрд░реНрдо рдХреНрд░реЗрдбрд┐рдЯ рдХрд╛рд░реНрдб рд╢реБрд▓реНрдХ рднреА рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред Nekomilfoред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдерд╛рди рдкрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рд╣рдо, рдмреЗрд╢рдХ, рд╕реНрдорд╛рд░реНрдЯ рд╣реИрдВ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдЕрд╢реБрджреНрдзрд┐рдпреЛрдВ рдХреЛ рд╕рд╛рдВрдХреЗрддрд┐рдХ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдмрджрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░, рдЕрдЧрд░ рд╣рдореЗрдВ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЗрд╕ рддрд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЕрдЬрд╡рд╛рдЗрди рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдмрд╛рд╣рд░реА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ? рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреЙрд░реНрдо рдХреЛ рддрддреНрдХрд╛рд▓ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд╕рд╣реА рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред
рдХрдХреНрд╖рд╛ рдЖрдзрд╛рд░рд┐рдд рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдХреЛрдб
рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рдорд╛рди рд╣реИ - рд╕рдорд╛рди рд▓рд╛рдн, рд╕рдорд╛рди рдиреБрдХрд╕рд╛рдиред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдВрд╕реЛрд▓ рдпрд╛ рдмрд╛рд╣рд░реА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ рддрд░реНрдХ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рджреЗрдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдЬрдЯрд┐рд▓ рд╣реИред
utils.py
рдПрдХ рдФрд░ рд╕рд░рд▓ рдФрд░ рд▓реБрднрд╛рд╡рдирд╛ рддрд░реАрдХрд╛ рд╕рдмрдорд┐рд╢рди рд╕реЗ рд╕рднреА рд╕рдм-рдХреЛрдб рдХреЛ рдЕрдореВрд░реНрдд рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрдирд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рддреНрд╡рд░рд┐рдд рд╕рдорд╛рдзрд╛рди (рдЬреЛ рдХрдИ рдЕрдВрддрддрдГ рдЪреБрдирддреЗ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдереЛрдбрд╝рд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВред
def accept_quote(request, quote_id, template_name="accept-quote.html"): quote = Quote.objects.get(id=quote_id) form = AcceptQuoteForm() if request.METHOD == 'POST': form = AcceptQuoteForm(request.POST) if form.is_valid():
рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕реНрдерд╛рди рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреБрдЫ рдореЙрдбрд▓реЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдб рдХрдИ рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рдлреИрд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдврд╝рддреА рд╣реИ рдФрд░ рдирдП / рдЕрдиреНрдп рд▓реЛрдЧ рдЙрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдХреМрди рд╕реЗ рдХрд╛рд░реНрдп рдореМрдЬреВрдж рд╣реИрдВред рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рдордп рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рджреЛрд╣рд░рд╛рд╡ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдореЗрдВ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЛ рдкрдХрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдкреЛрд╕реНрдЯ рдлреИрдХреНрдЯрдо рд╕реЙрд▓реНрдпреВрд╢рди рд╣реИред
рд╕рдорд╛рдзрд╛рди: рд╡рд╕рд╛ рдореЙрдбрд▓ рдФрд░ рд╡рд╕рд╛ рдкреНрд░рдмрдВрдзрдХ
рдореЙрдбрд▓ рдФрд░ рдЙрдирдХреЗ рдкреНрд░рдмрдВрдзрдХ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдХреЛрдб рдХреЛ рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрджрд░реНрд╢ рд╕реНрдерд╛рди рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдРрд╕рд╛ рдХреЛрдб рддрд╛рд░реНрдХрд┐рдХ рдпрд╛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ ORM рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рд╕реЗ рдмрдВрдзрд╛ рд╣реЛред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рддрд░реАрдХреЛрдВ рд╕реЗ рдПрдкреАрдЖрдИ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
def accept_quote(request, quote_id, template_name="accept-quote.html"): quote = Quote.objects.get(id=quote_id) form = AcceptQuoteForm() if request.METHOD == 'POST': form = AcceptQuoteForm(request.POST) if form.is_valid():
рдореЗрд░реЗ рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП, рдРрд╕рд╛ рд╕рдорд╛рдзрд╛рди рд╕рдмрд╕реЗ рд╕рд╣реА рд╣реИред рдХреНрд░реЗрдбрд┐рдЯ рдХрд╛рд░реНрдб рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдврдВрдЧ рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддрд░реНрдХ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ, рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЦреЛрдЬрдиреЗ рдФрд░ (рдкреБрдирдГ) рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реИред
рд╕рд╛рд░рд╛рдВрд╢: рд╕рд╛рдорд╛рдиреНрдп рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо
рдХрд╣рд╛рдБ рдХреЛрдб
@ рдмреНрд▓рд░ рд▓рд┐рдЦрдирд╛
рд╣реИ ? рдпрджрд┐ рдЖрдкрдХрд╛ рддрд░реНрдХ рдЕрдиреБрд░реЛрдз рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдмрдВрдзрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдВрднрд╡рддрдГ рджреГрд╢реНрдп рдореЗрдВ рдЬрдЧрд╣ рд╣реИред рдЕрдиреНрдпрдерд╛, рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
- рдореЙрдбрд▓ рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЛрдб
- рдкреНрд░рдмрдВрдзрдХ рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЛрдб
- рдХреЛрдб рд╡рд┐рдзрд┐ рд╡рд┐рдзрд┐ рдореЗрдВ
- рд╕реАрдмреАрд╡реА рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЛрдб
рдпрджрд┐ рдХреЛрдИ рднреА рд╡рд┐рдХрд▓реНрдк рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЕрдореВрд░реНрдд рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЯреАрдПрд▓, рдбреЙ
рдореЙрдбрд▓ рдореЗрдВ рддрд░реНрдХ django рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИ,
рди рдХрд┐ рдЖрдкрдХреЗ рдмрд╛рд▓реЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ред
рдмреЛрдирд╕
рдореВрд▓ рд╡рд┐рд╖рдп рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓реЗрдЦ рдХреЗ рд╡рд┐рд╖рдп рдХреЗ рдХрд░реАрдм рджреЛ рджрд┐рд▓рдЪрд╕реНрдк рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдлрд┐рд╕рд▓ рдЧрдПред
github.com/kmmbvnr/django-fsm -
django рдореЙрдбрд▓ (рд╡рд┐рд╡рд░рдг рд╕реЗ) рдХреЗ
рд▓рд┐рдП рд░рд╛рдЬреНрдп рдорд╢реАрди рд╕рдорд░реНрдерди ред рдореЙрдбрд▓ рдкрд░ FSMField рдлрд╝реАрд▓реНрдб рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░
рд░рд┐рд╕реАрд╡рд░ рдХреА рднрд╛рд╡рдирд╛ рдореЗрдВ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЯреНрд░реИрдХ рдХрд░реЗрдВред
github.com/adamhaney/django-ondelta -
django- рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╡реЗрд╢-рдкрддреНрд░ рдЬреЛ рдЖрдкрдХреЛ рдореЙрдбрд▓ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реНрд╡рдЪреНрдЫ _ * - рдореЙрдбрд▓ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд╢реИрд▓реА рдореЗрдВ рдПрдХ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ ред рд╡рд░реНрдгрди рдареАрдХ рд╡реИрд╕рд╛ рд╣реА рдХрд░рддрд╛ рд╣реИред
рдПрдХ рдЕрдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡рд╣рд╛рдБ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рдХреЛрдб рдХреЛ рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕рд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреАрдорддреЛрдВ рдХреЗ рдЖрд╡реЗрджрди рдореЗрдВ, рд╣рдо рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдореВрд▓реНрдп рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╕рднреА рдХреЛрдб рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред Utils.py рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рдорд╛рди, рдпрд╣ рдЕрд▓рдЧ рд╣реИ рдХрд┐ рд╣рдо рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдХреЛ рд╕рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕рдм рдХреБрдЫ рдирд╣реАрдВред
рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реНрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ:
- рдореЙрдбрд▓ рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЛрдб - рдпрджрд┐ рдХреЛрдб рдореЙрдбрд▓ рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ
- рдкреНрд░рдмрдВрдзрдХ рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЛрдб - рдпрджрд┐ рдХреЛрдб рдкреВрд░реЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ
- рдкреНрд░рдкрддреНрд░ рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЛрдб - рдпрджрд┐ рдХреЛрдб рд╕рддреНрдпрд╛рдкрди рдФрд░ / рдпрд╛ рдЕрдиреБрд░реЛрдз рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИ
- рд╕реАрдмреАрд╡реА рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЛрдб рд╡рд╣ рд╣реИ рдЬреЛ рдЕрдиреБрд░реЛрдз рдкрд░ рдФрд░ рдЕрд╡рд╢рд┐рд╖реНрдЯ рд╕рд┐рджреНрдзрд╛рдВрдд рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ
- Utils.py рдореЗрдВ - рдХреЛрдб рд╕реАрдзреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ
рдХреНрдпрд╛ рд╣рдо рдЗрд╕рдХреА рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ?