Я посмотрел один Django курс на сайте, который начинается с буквы U, и в конце у меня есть такой код. Дублирования много, и я покажу только один из них. На каждой странице я публикую sh информацию одного и того же типа, это больно смотреть на нее. Поэтому, пока я думал о двух решениях, чтобы это исправить:
- Создание глобальных переменных
- Определение функции, которая будет возвращать все эти дубликаты переменных
main.view
def home(request):
''' index.page '''
site, _ = Main.objects.get_or_create(pk=1) # (1)
news = News.objects.all().order_by('-pk') # (2)
subs = SubCat.objects.all() # (3)
lastNews = News.objects.all().order_by('-pk')[:3]
popNews = News.objects.all().order_by('-show')
bottomPopNews = News.objects.all().order_by('-show')[:3] # (5)
trends = Trending.objects.all().order_by('-pk') # (6)
# group Subcategories in each Category
tags = SubCat.objects.values('catid', 'catid__name').order_by('catid').annotate(count=Count('catid')) # (4)
Tracker.objects.create_from_request(request, site)
return render(request, 'front/home.html', {'site' : site, 'news' : news, 'tags' : tags, 'subs' : subs, 'lastNews':lastNews, 'popNews' : popNews, 'bottomPopNews':bottomPopNews, 'trends':trends})
def about(request):
''' About page '''
site, _ = Main.objects.get_or_create(pk=1) # (1)
popNews = News.objects.all().order_by('-show')[:3]
news = News.objects.all().order_by('-pk') # (2)
subs = SubCat.objects.all() # (3)
bottomPopNews = News.objects.all().order_by('-show')[:3] # (5)
tags = SubCat.objects.values('catid', 'catid__name').order_by('catid').annotate(count=Count('catid')) # (4)
trends = Trending.objects.all().order_by('-pk')
return render(request, 'front/about.html', {'site' : site, 'popNews':popNews,'bottomPopNews':bottomPopNews,'tags':tags,'subs' : subs,'news' : news,'trends':trends,})
def contact(request):
''' Contact page '''
site, _ = Main.objects.get_or_create(pk=1) # (1)
popNews = News.objects.all().order_by('-show')[:3]
news = News.objects.all().order_by('-pk') # (2)
subs = SubCat.objects.all() # (3)
bottomPopNews = News.objects.all().order_by('-show')[:3] # (5)
tags = SubCat.objects.values('catid', 'catid__name').order_by('catid').annotate(count=Count('catid')) # (4)
form = ContactForm()
return render(request, 'front/contact.html', {'site' : site, 'popNews':popNews,'bottomPopNews':bottomPopNews,'tags':tags,'subs' : subs,'news' : news, 'form':form})