ai_admin/WebAdmin/AccessLog.py
2024-09-20 04:29:09 +00:00

70 lines
2.5 KiB
Python
Executable File

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