изобрёл велосипед с треугольными колёсами, подскажите пожалуйста как их заменить на круглые
задача была такая. сделать ленту новостей. при первой загрузке странички показываются 3 последние новости и ссылка "показать все новости". если пользователь кликает по ссылке, то страничка перегружается и показываются все новости(ссылка "показать все новости" уже не показывается)
вот моё решение. оно работает, но подозрительно сложное. хотелось бы сделать по человечески
urls.py:
urlpatterns = patterns('',
url(r'^$', 'avtos.views.views.index'),
url(r'^index$', 'avtos.views.views.index'),
url(r'^admin/', include(admin.site.urls)),
)
views.py:
def index(request):
quantity_entries = News.get_quantity_entries()
try:
request.POST['quantity_news_show']
except KeyError:
entries_show = 3
else:
entries_show = quantity_entries
all_entries_news = News.get_all_entries(entries_show)
t = loader.get_template('index.html')
c = RequestContext(request, {
'all_entries_news': all_entries_news,
'quantity_entries': quantity_entries,
'entries_show': entries_show,
})
return HttpResponse(t.render(c))
index.html:
{% for entrie in all_entries_news %}
<article class="news_item">
<h1 class="h1">{{ entrie.title }}</h1>
<div class="body">{{ entrie.message }}</div>
<div class="date">{{ entrie.date }}</div>
</article>
{% endfor %}
{% if quantity_entries > entries_show %}
<form action="/" name="all_news_show" method="post">{% csrf_token %}
<input type="hidden" value="{{ quantity_entries }}" name="quantity_news_show" />
<input type="submit" value="Показать все новости" name="submit_news_show" />
</form>
{% endif %}
всего: {{ quantity_entries }}
показ: {{ entries_show }}
models.py
class News(models.Model):
title = models.CharField(max_length=100)
date = models.DateField()
message = models.TextField(max_length=5000)
@classmethod
def get_quantity_entries(self):
return int(self.objects.count())
@classmethod
def get_all_entries(self, limit, offset=0):
query = self.objects.all()
if limit:
result = query[offset:limit]
else:
result = query
return result
я понимаю, что наверняка существуют готовые решения для ленты новостей, но меня сейчас интересует именно велосипед. направьте пожалуйста на истинный путь