TimberTrust/business_information/views.py

141 lines
5.4 KiB
Python
Raw Normal View History

2024-04-08 19:48:05 +08:00
import json
2024-04-09 15:00:24 +08:00
from django import template
2024-03-28 19:21:35 +08:00
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
2024-03-27 14:50:00 +08:00
from django.shortcuts import render, get_object_or_404
from .models import Company
2024-03-28 19:21:35 +08:00
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
2024-04-07 18:03:42 +08:00
def home(request):
# 这里不再执行任何数据库查询,直接渲染主页模板
return render(request, 'business_information/home.html')
def about_us(request):
# 这里不再执行任何数据库查询,直接渲染主页模板
return render(request, 'business_information/about_us.html')
2024-03-28 19:21:35 +08:00
def company_list(request):
2024-04-08 19:48:05 +08:00
# 尝试打开并加载JSON文件
json_file_path = 'static/file/city.json'
2024-03-28 19:21:35 +08:00
try:
2024-04-08 19:48:05 +08:00
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})
2024-04-09 15:00:24 +08:00
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})
2024-03-28 19:21:35 +08:00
2024-03-27 14:50:00 +08:00
def company_detail(request, enterprise_id):
company = get_object_or_404(Company, enterprise_id=enterprise_id)
2024-03-28 19:21:35 +08:00
return render(request, 'business_information/company_detail.html', {'company': company})