TimberTrust/business_information/views.py

81 lines
3.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.shortcuts import render, get_object_or_404
from .models import Company
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.shortcuts import render, get_object_or_404
from .models import Company
from django.db.models import Q
def home(request):
# 这里不再执行任何数据库查询,直接渲染主页模板
return render(request, 'business_information/home.html')
def about_us(request):
# 这里不再执行任何数据库查询,直接渲染主页模板
return render(request, 'business_information/about_us.html')
def company_list(request):
# 获取查询参数
query_name = request.GET.get('name', '')
query_province = request.GET.get('province', '')
query_city = request.GET.get('city', '')
query_district = request.GET.get('district', '')
query_industry = request.GET.get('industry', '')
# 构建查询条件Q 对象用于执行复杂查询)
query_conditions = Q()
if query_name:
query_conditions &= Q(name__icontains=query_name)
if query_province:
query_conditions &= Q(province__icontains=query_province)
if query_city:
query_conditions &= Q(city__icontains=query_city)
if query_district and query_district != '区域':
query_conditions &= Q(district__icontains=query_district)
if query_industry and query_industry != '行业':
query_conditions &= Q(industry__icontains=query_industry)
# 如果'区域'和'行业'都是默认选项,则返回所有记录
if query_district == '区域' and query_industry == '行业':
query_conditions = Q() # 这将匹配所有公司
# 过滤查询集
companies = Company.objects.filter(query_conditions)
# 获取区域和行业列表
districts = Company.objects.values_list('district', flat=True).distinct().order_by('district')
districts = [district for district in districts if district != '区域']
industries = Company.objects.values_list('industry', flat=True).distinct().order_by('industry')
industries = [industry for industry in industries if industry != '行业']
# 分页
paginator = Paginator(companies, 10) # 每页显示10条记录
page = request.GET.get('page', 1)
try:
companies = paginator.page(page)
except PageNotAnInteger:
companies = paginator.page(1)
except EmptyPage:
companies = paginator.page(paginator.num_pages)
return render(request, 'business_information/company_list.html', {
'companies': companies,
'districts': districts,
'industries': industries,
'query_name': query_name,
'query_province': query_province,
'query_city': query_city,
'query_district': query_district,
'query_industry': query_industry
})
def company_detail(request, enterprise_id):
company = get_object_or_404(Company, enterprise_id=enterprise_id)
return render(request, 'business_information/company_detail.html', {'company': company})