TimberTrust/business_information/views.py

140 lines
5.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.

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