随着我的Django技能水平的提高,我开始以不同的方式看到我的代码,我不顾一切地找到一种不在我的观点中重复自己的方法 - 如下所示。我将非常感谢应该如何设置我的视图的示例。谢谢。
# -*- coding: utf-8 -*-
from django.shortcuts import render
from listings.models import Listing
from posts.models import Reveal
def home(request):
return render(request, "pages/home.html", {})
def about(request):
reveals = Reveal.objects.all().order_by('?')[:1:1]
listings = Listing.objects.filter(featured_choices="YES").order_by('?')[:1:1]
return render(request, 'pages/about.html', {'listings': listings, 'reveals': reveals})
def team(request):
reveals = Reveal.objects.all().order_by('?')[:1:1]
listings = Listing.objects.filter(featured_choices="YES").order_by('?')[:1:1]
return render(request, "pages/theteam.html", {'listings': listings, 'reveals': reveals})
def why(request):
reveals = Reveal.objects.all().order_by('?')[:1:1]
listings = Listing.objects.filter(featured_choices="YES").order_by('?')[:1:1]
return render(request, "pages/why.html", {'listings': listings, 'reveals': reveals})
def services(request):
reveals = Reveal.objects.all().order_by('?')[:1:1]
listings = Listing.objects.filter(featured_choices="YES").order_by('?')[:1:1]
return render(request, "pages/services.html", {'listings': listings, 'reveals': reveals})
def selling_facts(request):
reveals = Reveal.objects.all().order_by('?')[:1:1]
listings = Listing.objects.filter(featured_choices="YES").order_by('?')[:1:1]
return render(request, "pages/selling_facts.html", {'listings': listings, 'reveals': reveals})
def buying_facts(request):
reveals = Reveal.objects.all().order_by('?')[:1:1]
listings = Listing.objects.filter(featured_choices="YES").order_by('?')[:1:1]
return render(request, "pages/buying_facts.html", {'listings': listings, 'reveals': reveals})
def liquor_licenses(request):
reveals = Reveal.objects.all().order_by('?')[:1:1]
listings = Listing.objects.filter(featured_choices="YES").order_by('?')[:1:1]
return render(request, "pages/liquor_licenses.html", {'listings': listings, 'reveals': reveals})
def contact(request):
return render(request, "pages/contact.html", {})
答案 0 :(得分:0)
您可以通过定义名为参数的网址来更改您的网址以反映其服务目的。您可以在单个视图中捕获它,并根据该参数呈现不同的页面:
# url definition
url(r'^pages/(?P<page>\w+)/$', views.render_pages, name='render-pages')
# your views
from django.http import Http404
def _get_template_by_parameter(page):
if page == 'about':
return 'pages/about.html'
elif page == 'team':
return 'pages/theteam.html'
# some more branches here
return None
def render_pages(request, page):
reveals = Reveal.objects.all().order_by('?')[:1:1]
listings = Listing.objects.filter(featured_choices="YES").order_by('?')[:1:1]
template = _get_template_by_parameter(page)
if template:
return render(request, template, {'listings': listings, 'reveals': reveals})
else:
raise Http404
您可以访问以下网址:http://test.com/pages/about或http://test.com/pages/team。显然你需要更好的措辞,因为我只是快速编写代码。