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})