140 lines
5.0 KiB
Python
140 lines
5.0 KiB
Python
import json
|
||
import urllib.parse
|
||
|
||
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:
|
||
query_conditions &= Q(district__icontains=query_district)
|
||
if query_industry:
|
||
query_conditions &= Q(industry__icontains=query_industry)
|
||
|
||
# 过滤查询集
|
||
companies = Company.objects.filter(query_conditions)
|
||
count = len(companies)
|
||
|
||
# 分页
|
||
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)
|
||
|
||
# 处理查询字符串
|
||
get_data = request.GET.copy()
|
||
if 'page' in get_data:
|
||
del get_data['page']
|
||
query_string = urllib.parse.urlencode(get_data)
|
||
|
||
# 这里不再执行任何数据库查询,直接渲染主页模板
|
||
return render(request, 'business_information/company_list_detail.html',
|
||
context={'provinces_cities': provinces_cities, 'industries_data': industries_data,
|
||
'companies': companies,
|
||
'query_string': query_string,
|
||
'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})
|