first commit
This commit is contained in:
69
WebAdmin/AccessLog.py
Executable file
69
WebAdmin/AccessLog.py
Executable file
@@ -0,0 +1,69 @@
|
||||
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)}'})
|
||||
Reference in New Issue
Block a user