рдлрд┐рд░ рд╕реЗ рдмрдзрд╛рдИ, рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдореИрдВ Django рдореЗрдВ рдХрдХреНрд╖рд╛ рдЖрдзрд╛рд░рд┐рдд рджреГрд╢реНрдпреЛрдВ (рдЗрд╕рдХреЗ рдмрд╛рдж CBV) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рдПрдХ рдФрд░ рд▓реЗрдЦ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЗрд╕ рдмрд╛рд░, рдЬреИрд╕рд╛ рдХрд┐ рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдореИрдВ рд▓рд┐рд╕реНрдЯ рд╡реНрдпреВ (рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░) рдФрд░ рдбрд┐рдЯреЗрд▓ рд╡реНрдпреВ (рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд╕реНрддреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░) рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рднрд╛рдЧ 1 ,
рднрд╛рдЧ 2 ,
рднрд╛рдЧ 3 ,
рднрд╛рдЧ 4рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, рдореБрдЭреЗ рдкрд╛рдардХреЛрдВ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЦреБрд╢реА рд╣реЛрдЧреА - рдпрджрд┐ рдЖрдкрдХреЛ рд▓реЗрдЦ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдпрд╛ рдЕрд╢реБрджреНрдзрд┐ рдорд┐рд▓рддреА рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВ, рд╣рдо рдПрдХ рд╕рд╛рде рд▓реЗрдЦ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдПрдВрдЧреЗред
рддреНрд╡рд░рд┐рдд рд╡рд┐рдзрд┐ рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ
get_paginate_byget_allow_emptyget_context_object_nameget_objectget_slug_fieldрддреНрд╡рд░рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдЦреЛрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ
paginate_bypaginator_classallow_emptycontext_object_nameрд╡рд╕реНрддреБslug_fieldрд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ
рдирд┐рд╕реНрд╕рдВрджреЗрд╣, рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ Django рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╡рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреЗрд╡рд▓ рд╕рд╛рдордирд╛ рдХрд┐рдП рдЧрдП рдирдП рд▓реЛрдЧреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреВрдВрдЧрд╛ред
рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрдм рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ, рдЙрди рд╕рднреА рдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рдж рдЕрд╡рд╛рдВрдЫрдиреАрдп рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреЗрдЯрд╛ рдХреЗ рдкреЗрдЬрд┐рдиреЗрд╢рди (рдкреЗрдЬрд┐рдиреЗрд╢рди) рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдбрд┐рдЯреЗрд▓реНрдпреВрд╡реНрдпреВ рд╡рд░реНрдЧ рдорд▓реНрдЯреАрдСрдмрдЬреЗрдХреНрдЯрдореЗрдХреНрд╕рд┐рди рдПрдбрд┐рдХреНрд╕рдЪрд░ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддрд┐ рдкреГрд╖реНрда рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
get_paginate_by , рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ
paginate_by рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкрд░реЗрд╢рд╛рдиреА рдХреЗ 1 рдкреГрд╖реНрда рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХрднреА-рдХрднреА рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдкреЗрдЬреЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдЕрдкрдиреЗ рдкреЗрдЬреЗрд╢рди рд╡рд░реНрдЧ рдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдкрдЧрд┐рдиреЗрдЯрд░_рдХреНрд▓рд╛рд╕ ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдорд╛рдирдХ Paginator рд╡рд░реНрдЧ рдХрд╛ рд▓рд┐рдВрдХ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ django.core.pagatorator рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреЛ рдмрд╛рд░ рд╕реЛрдЪреЗрдВ рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╢реБрд░реВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред
рдЧреБрдг
allow_empty рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реВрдЪреА рдореЗрдВ рдХреЛрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдорд╛рди True (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ) рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рдЦрд╛рд▓реА рд╕реВрдЪреА рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреАред рдпрджрд┐ рдорд╛рди рдЧрд▓рдд рд╣реИ, рддреЛ рддреНрд░реБрдЯрд┐ 404 рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреАред рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдорд╛рди рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
get_allow_empty ред рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рддреНрдпрд╛рдкрди рдпрд╛ рддрд░реНрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ, рд╡рд╕реНрддреБрдУрдВ рдХреА рд╣рдорд╛рд░реА рд╕реВрдЪреА рдирд╛рдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреА, рдЬрд┐рд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
reference_object_name (рдпрд╛ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛
get_context_object_name , рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереА)ред рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╛рдо рдХреЗ рдПрдХ рдЪрд░ рдореЗрдВ рд╣реИрдВ
рдСрдмреНрдЬреЗрдХреНрдЯ_рд▓рд┐рд╕реНрдЯ ред рдЪрд░ рдорд╛рди
is_paginated (рдмреВрд▓рд┐рдпрди) рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА
рдкреГрд╖реНрдардмрджреНрдз рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЖрдк
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдкреГрд╖реНрдард╛рдВрдХрди рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЧреБрдг
рдСрдмреНрдЬреЗрдХреНрдЯ_рд▓рд┐рд╕реНрдЯ рд╣рдорд╛рд░реА рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рдХреЛ рдЕрдкрдиреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА urls.py рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд╛рдорд┐рдд рд╕рдореВрд╣реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
url(r'^page/(?P<page>\d+)/$', PrivatePostList.as_view()),
рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд╕рд╛рде рд╡рд┐рд╡рд░рдг рдХреЛ рдкрддрд▓рд╛ рдХрд░реЗрдВ:
рдФрд░ рдпрд╣рд╛рдБ, рдореЛрдЯреЗ рддреМрд░ рдкрд░, рдпрд╣ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
{% extends 'base.html' %} {% block title %} {% endblock %} {% block content %} {% for post in object_list %} <div class="post"> <div class="post_name">{{ post.name }}</div> <div class="post_text">{{ post.text|safe }}</div> <div class="post_info">{{ post.author.username }}, {{ post.created_at|date:"dmY H:i" }}</div> </div> {% empty %} <p> :(</p> {% endfor %} {% if paginator.num_pages > 1 %} {% if page_obj.has_previous %} <a href="/page{{ page_obj.previous_page_number }}/">←</a> {% endif %} <span class="current_page">{{ paginator.number }}</span> {% if page_obj.has_next %} <a href="/page{{ page_obj.next_page_number }}">→</a> {% endif %} {% endif %} {% endblock %}
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдбрд┐рдЯреЗрд▓ рд╡реНрдпреВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЕрдЧрд░ рдореБрдЭреЗ рдлрд┐рд░ рднреА рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдпрд╛рдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВ рдФрд░ рдореИрдВ рд▓реЗрдЦ рдХреЛ рдкреВрд░рдХ рдХрд░реВрдВрдЧрд╛ред
рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд╕реНрддреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦреЗрдВ
рдЕрдм рдпрд╣ рд╡рд┐рд╕реНрддрд╛рд░ рджреГрд╢реНрдп рд╡рд░реНрдЧ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
рдПрдХрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреБрдЫ рдкреИрд░рд╛рдореАрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЗрд╕рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рддрдерд╛рдХрдерд┐рдд рдЕрджреНрд╡рд┐рддреАрдп рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА (рдкреАрдХреЗ, рдЖрдИрдбреА) рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Django рдЖрдкрдХреЛ рд╕реНрд▓рдЧ рдлрд╝реАрд▓реНрдб рджреНрд╡рд╛рд░рд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдХреЛрдИ рднреА рдЕрдиреВрдард╛ рд╢рдмреНрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдПрд╕рдИрдУ рдХреЗ рд▓рд┐рдП рд╕реНрд▓рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрднреА-рдХрднреА рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИ, рдпрджрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реЗрдЦ рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рд╣реИрдмреЗ рдкрд░ рд╣реИ)ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП рд╕реНрд▓рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдпрд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рдВрджреЗрд╢ рджреЗрдЦрдирд╛)ред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЬрдм рд╣рдордиреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдЪреБрдирд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ urls.py рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░ рдкрд╛рд╕ рдХрд░рдХреЗ рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ Django рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
url(r'^post/(?P<pk>\d+)/$', PostDetail.as_view()),
рдЬрд┐рд╕ рднреА рд╡рд╕реНрддреБ рдХреЛ рд╣рдо рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдЙрд╕рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рд╣рдорд╛рд░реА рд╡рд╕реНрддреБ рд╕реБрд▓рдн рд╣реЛрдЧреА
get_object ред рдпрд╣ рд╡рд┐рдзрд┐ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдорд╛рд░реНрдЧ рдореЗрдВ рдЪрд░ pk рдФрд░ рд╕реНрд▓рдЧ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреА рд╣реИ, рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ pk рдирд╛рдо рдХреЗ рдЪрд░ рдХреА рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реЛрдЧреАред рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
get_slug_field рд╣рдо рдЕрдкрдиреЗ рдореЙрдбрд▓ рдХреЗ рд╕реНрд▓рдЧ рдлрд╝реАрд▓реНрдб рдирд╛рдо рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рд╡рд┐рдзрд┐ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рди рд▓реМрдЯрд╛рддреА рд╣реИред
slug_field ред рд╣рдорд╛рд░реА рд╡рд╕реНрддреБ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ
рд╡рд╕реНрддреБ ред
from django.http import Http404 from django.views.generic.detail import DetailView from content.models import Post class PostView(DetailView): model = Post context_object_name = 'post' template_name = 'private_post_detal.html' def get_object(self): """ 404 login_required """ object = super(PostView, self).get_object() if not self.request.user.is_authenticated(): raise Http404 return object
рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо ListView рдФрд░ DetailView рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдЪрд░реНрдЪрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ FormView рдФрд░ рд░реВрдкреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдореИрдВ рдЖрд▓реЛрдЪрдирд╛ рдФрд░ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реВрдВред рдореИрдВ рдЖрдк рд╕рднреА рдХреЛ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдХреА рд╢реБрднрдХрд╛рдордирд╛рдПрдБ рджреЗрддрд╛ рд╣реВрдБ! "