TimberTrust/business_information/views.py

141 lines
5.4 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.

import json
from django import template
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):
# 尝试打开并加载JSON文件
json_file_path = 'static/file/city.json'
try:
with open(json_file_path, 'r', encoding='utf-8') as file:
city_data = json.load(file)
except FileNotFoundError:
return render(request, 'business_information/error.html', {'error': 'JSON文件未找到'})
# 尝试打开并加载JSON文件
file_path = 'static/file/industry.json'
with open(file_path, 'r', encoding='utf-8') as file:
industry_data = json.load(file)
# 初始化一个新的字典来存储省份和城市信息
provinces_cities = {
"直辖市": ['北京市', '天津市', '重庆市', '上海市']
}
# 获取省份数据
province = city_data.get('00')
for num, name in province.items():
if name in provinces_cities.get('直辖市'):
continue
else:
provinces_cities[name] = []
for k, v in city_data[num].items():
provinces_cities[name].append(v)
# 返回解析后的省份和城市信息
return render(request, 'business_information/company_list.html',
{'provinces_cities': provinces_cities, 'industry_data': industry_data})
def list_detail(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)
count = len(companies)
# 获取区域和行业列表
# 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)
# 查询条件
json_file_path = 'static/file/city.json'
try:
with open(json_file_path, 'r', encoding='utf-8') as file:
city_data = json.load(file)
except FileNotFoundError:
return render(request, 'business_information/error.html', {'error': 'JSON文件未找到'})
# 尝试打开并加载JSON文件
file_path = 'static/file/industry.json'
with open(file_path, 'r', encoding='utf-8') as file:
industry_data = json.load(file)
industries_data = []
# 处理行业
for k in industry_data.keys():
industries_data.append(k)
# 初始化一个新的字典来存储省份和城市信息
provinces_cities = []
# 获取省份数据
province = city_data.get('00')
for num, name in province.items():
provinces_cities.append(name)
# 这里不再执行任何数据库查询,直接渲染主页模板
return render(request, 'business_information/company_list_detail.html',
context={'provinces_cities': provinces_cities, 'industries_data': industries_data,
'companies': companies,
'query_name': query_name,
'query_province': query_province,
'query_city': query_city,
'query_district': query_district,
'query_industry': query_industry,
'count': count})
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})