from django.http import JsonResponse from django.views.decorators.csrf import csrf_exempt from datetime import datetime from .models import WebsiteAccessLog, WebsiteInfo from .utils import ( get_client_ip, get_browser_language, get_referrer, get_user_agent, get_device_type, get_beijing_time, ) @csrf_exempt def website_info_view(request): """ 提供网站配置信息,并记录访问日志 """ print("当前 UTC 时间:", datetime.now()) try: # 获取访问信息 client_ip = get_client_ip(request) browser_language = get_browser_language(request) referrer = get_referrer(request) request_path = request.path request_method = request.method user_agent = get_user_agent(request) device_type = get_device_type(user_agent) # 获取当前 UTC 时间并转换为北京时间 access_time_bj = datetime.now() access_date = datetime.now() # 检查同一 IP 当天是否已经记录过 if not WebsiteAccessLog.objects.filter(ip_address=client_ip, access_date=access_date).exists(): # 记录访问日志 WebsiteAccessLog.objects.create( ip_address=client_ip, browser_language=browser_language, referrer=referrer, request_path=request_path, request_method=request_method, user_agent=user_agent, device_type=device_type, access_time_bj=access_time_bj, access_date=access_date, ) # 获取网站配置信息 website_info = WebsiteInfo.objects.first() if not website_info: return JsonResponse({'code': 404, 'message': '未找到网站配置信息'}) # 返回网站配置信息 data = { 'domain_en': website_info.domain_en, 'title_en': website_info.title_en, 'keywords_en': website_info.keywords_en, 'description_en': website_info.description_en, 'domain_zh': website_info.domain_zh, 'title_zh': website_info.title_zh, 'keywords_zh': website_info.keywords_zh, 'description_zh': website_info.description_zh, } return JsonResponse({'code': 200, 'message': 'ok', 'data': data}) except Exception as e: return JsonResponse({'code': 500, 'message': f'服务器内部错误: {str(e)}'})