我想调用的最后一个函数在此代码(DEF get_level_msg():)调用从Django的HTML模板
class ProductDetailView(ProductView):
model = EnrollableTemplate
@functional.cached_property
def location(self):
return get_object_or_404(
Location.actives, slug=self.kwargs['location_slug'])
def get_object(self):
return get_object_or_404(
EnrollableTemplate, slug=self.kwargs['product_slug'])
def get_template_names(self):
if self.get_object().category.language:
return 'pdp_language.html'
return 'immersion_pdp.html'
def get_faqs(self):
object = self.get_object()
if object.is_workshop:
return c.faqs['workshop']
elif object.category.language:
return c.faqs['language']
else:
return c.faqs['immersion']
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
template = kwargs[self.context_object_name]
# only display upcoming classes that have open seats available
courses = (template.enrollable_set
.upcoming()
.select_related('template', 'venue__location')
.filter(venue__location=self.location)
.order_by('start_date'))
loc_filter = self.request.GET.get('neighborhood')
context['language'] = language = template.category.language
if not self.object.is_workshop:
sessions = [enrollable.session_count for enrollable
in self.object.enrollable_set.upcoming()]
if sessions:
context['max_sessions'] = max(sessions)
neighborhoods = (Venue.objects.filter(location=self.location)
.filter(enrollable__in=courses)
.distinct()
.values_list('neighborhood', flat=True))
if loc_filter:
courses = courses.filter(course__venue__neighborhood=loc_filter)
context['filtered'] = True
location_filters = [('?neighborhood={}'.format(n), n) for
n in neighborhoods.iterator()]
path = urlparse(self.request.get_full_path()).path
location_filters.insert(0, ('{}#filter'.format(path), "all"))
context['filters'] = [('Location', location_filters)]
if language:
context['featured_teachers'] = self.get_featured_teachers(
self.location, language)
else:
try:
context['featured_teachers'] = [courses[0].teacher]
except IndexError:
context['featured_teachers'] = None
context['expectations'] = template.expectation_set.all()
context['faqs'] = self.get_faqs()
context['courses'] = courses
context['template_id'] = template.id
# import ipdb; ipdb.set_trace()
if courses.exists():
course = courses[0]
days_per_week = sum(1 for x in course.schedule if x is True)
if days_per_week == 1:
days_per_week = 'once'
elif days_per_week == 2:
days_per_week = 'twice'
else:
days_per_week = 'every day'
context['days_per_week'] = days_per_week
weeks = (course.start_date - course.end_date).days
context['weeks_per_course'] = abs(int(weeks/7))
context['has_book'] = course.template.books.count() > 0
context['first_start_date'] = course.start_date
context['hello'] = template.level
level_message1 = "Beginner Course"
level_message2 = "Intermediate Course"
level_message3 = "Advanced Course"
level_message4 = "Beginner Intensive"
# context['get_level_msg'] =
def get_level_msg():
if template.level == 1:
return level_message1
elif template.level == 2:
return level_message1
elif template.level == 3:
return level_message1
elif template.level == 4:
return level_message2
elif template.level == 5:
return level_message2
elif template.level > 5:
return level_message3
else:
return level_message4
到使用这个HTML模板
<h4 class="t2">{{ weeks_per_course }} WEEK {{ ProductDetailView.get_level_msg }}<!-- BEGINNER INTENSIVE --></h4>
Django视图功能我在网上找到的例子,它说我应该首先使用模型,在这种情况下,它的ProductDetailView。我进入Django的3天,仍然不明白如何做到这一点!有人能帮我得出结论吗?谢谢!
这个问题有点混乱。 ProductDetailView听起来像一个视图,而不是一个模型。代码*完全*在哪里?这个函数里面的'template'在哪里? –
另外,什么是'模板'和'template.level'? – Chris
[模板标签](https://docs.djangoproject.com/zh/1.10/howto/custom-template-tags/)可能对您有所了解。 –