Django рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рджреМрд░рд╛рди, рдореИрдВрдиреЗ рдХрдИ рдЫреЛрдЯреЗ рдЙрдкрдХрд░рдг рдЬрдорд╛ рдХрд┐рдП рд╣реИрдВ: рд╕рдЬреНрдЬрд╛рдХрд╛рд░, рд╢реЙрд░реНрдЯрдХрдЯ, рдХрд╕реНрдЯрдо рдлрд╝реАрд▓реНрдб рдФрд░ рдмрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдЬреЛ рдХрд┐ рдореЗрд░реЗ рд╕рд╛рде рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЖрд╕рд╛рди рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рднрдЯрдХ рдЧрдП рдереЗред рдЕрдВрдд рдореЗрдВ, рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХреЛрдб рднреМрддрд┐рдХ рдЕрдиреБрднрд╡ рд╣реИ (рдЗрд╕рд╕реЗ рднреА рдмреЗрд╣рддрд░ - рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ), рдФрд░ рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдЦреЛрд▓рдирд╛ред
рдкреИрдХреЗрдЬ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп django рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрд╡рд╢реНрдпрдХ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░рдирд╛ рд╣реИред рдПрдХ рд╣реА рдЪреАрдЬ рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЛрдб рдХреЛ рдЫреЛрдЯрд╛ рдФрд░ рдЕрдзрд┐рдХ рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ рдмрдирд╛рдПрдВред
рддреЛ, рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
pip install handy
рдФрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдХрд╛рдо рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓реЗрдЧрд╛?
1. HttpResponse
рдФрд░
render_to_response()
рд╕реЗ рдмрдЪрдирд╛
render_to_response()
рдбреЗрдХреЛрд░реЗрдЯрд░
@render_to()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░:
# 'app_name/foo.html', # app_name - @render_to() def foo(request): return { 'bar': Bar.objects.all() # , HTTP , 'STATUS': 410, 'CONTENT_TYPE': 'text/plain' }
2. JSON рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдореЗрдВ рд╡рд┐рдЪрд╛рд░:
@render_to_json() def posts_by_tag(request, tag=None): posts = Post.object.values().filter(tag=tag) return list(posts)
3. рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рдЖрд╡рд░рдг:
@ajax @ajax.login_required @ajax.catch(Post.DoesNotExist) def enable_post(request): post = Post.objects.get(pk=request.GET['id']) if post.author != request.user: # {"success": false, "error": "permission_denied"} raise ajax.error('permission_denied') post.enabled = True post.save() # {"success": true, "data": null}
4. рд╣рдо рдПрдХ рд▓рд╛рдЗрди рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдкрддреНрд░ рднреЗрдЬрддреЗ рд╣реИрдВ:
render_to_email(article.author.email, 'approved.html', {'article': article})
рдПрдХ рдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдПрдХ рд╡рд┐рд╖рдп рдФрд░ рдХреЛрдИ рдЕрдиреНрдп рд╢реАрд░реНрд╖рдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
5. рдореЙрдбрд▓ рдлрд╝реАрд▓реНрдб рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рдкрддреНрд░ рдлрд╝реАрд▓реНрдб рдФрд░ рд╡рд┐рдЬреЗрдЯ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣:
DAYS = zip(range(7), 'Sun Mon Tue Wed Thu Fri Sat'.split()) class Company(models.Model): phones = StringArrayField('Phone numbers', blank=True, default='{}') workdays = IntegerArrayField('Work days', choices=DAYS) company = Company(phones=['234-5016', '516-2314'], workdays=[1,2,3,4]) company.save()
рдлреЙрд░реНрдо рдореЗрдВ,
phones
рдХреЛ рдХреЙрдорд╛ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рдЯреЗрдХреНрд╕реНрдЯ рдмреЙрдХреНрд╕ рдореЗрдВ рдФрд░ рдХрдИ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ
workdays
рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдордирдорд╛рдирд╛ рдбреЗрдЯрд╛ рдФрд░ рдЕрдиреНрдп рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ
JSONField
рднреА рд╣реИред
рдФрд░ рдпрд╣ рднреА:
- рдорд┐рдбрд▓рд╡реЗрдпрд░, рдЬреЛ html- рдЙрддреНрддрд░ рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдХрд╛рдЯрддрд╛ рд╣реИ,
- рд╕рд╛рдорд╛рдиреНрдп рдорд╛рд╕реНрдЯрд░-рджрд╛рд╕ рд░рд╛рдЙрдЯрд░,
- рд▓реЙрдЧрд┐рдВрдЧ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдЖрд╡рд░рдг,
- рдФрд░ рдкрд╛рда рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реАред
рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ
рдЬрд╡рд╛рдм рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рд╕реБрдирдирд╛ рдпрд╛ рдмреЗрд╣рддрд░ рджреЗрдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдпрджрд┐ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЬреАрд╡рди рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рдо рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдпрд╛ рдмрд╕ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреИрдЯрд░реНрди рднреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдВред
рд▓рд┐рдВрдХреНрд╕:
рдЧрд┐рдердм ,
рдкрд╛рдпрдкреА ,
рдЬрд┐рдВрдЧреЛ рдкреИрдХреЗрдЬ рдФрд░
рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди ред