From 193f739693fbb661de4e8f8e37a33aed5be0819e Mon Sep 17 00:00:00 2001 From: DSQ Date: Thu, 5 Mar 2026 21:00:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E4=BA=86=E4=B8=80=E7=82=B9=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E6=98=BE=E7=A4=BA=EF=BC=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- elastic/templates/elastic/manage.html | 2 +- elastic/views.py | 39 +++++++++++++++++++++++---- main/views.py | 5 ++-- 3 files changed, 38 insertions(+), 8 deletions(-) diff --git a/elastic/templates/elastic/manage.html b/elastic/templates/elastic/manage.html index 6d7b160..33b5d16 100644 --- a/elastic/templates/elastic/manage.html +++ b/elastic/templates/elastic/manage.html @@ -333,7 +333,7 @@ function renderTable(data) {
${escapeHtml(displayData)}
- ${item.writer_id || ''} + ${item.writer_name || item.writer_id || ''} diff --git a/elastic/views.py b/elastic/views.py index 3454adb..3728316 100644 --- a/elastic/views.py +++ b/elastic/views.py @@ -81,6 +81,21 @@ def _attach_image_urls(request, items): return out +def _attach_writer_names(items): + users = get_all_users() + name_by_id = {str(u.get("user_id")): u.get("username") for u in (users or [])} + out = [] + for it in list(items or []): + try: + d = dict(it or {}) + except Exception: + continue + wid = d.get("writer_id") + d["writer_name"] = name_by_id.get(str(wid), str(wid) if wid is not None else "") + out.append(d) + return out + + @require_http_methods(["GET", "POST"]) @csrf_exempt def init_index(request): @@ -117,7 +132,8 @@ def search(request): return JsonResponse({"status": "error", "message": "搜索关键词不能为空"}, status=400) results = search_data(query) - return JsonResponse({"status": "success", "data": _attach_image_urls(request, results)}) + data = _attach_writer_names(_attach_image_urls(request, results)) + return JsonResponse({"status": "success", "data": data}) except Exception as e: return JsonResponse({"status": "error", "message": str(e)}, status=500) @@ -131,7 +147,8 @@ def fuzzy_search(request): return JsonResponse({"status": "error", "message": "搜索关键词不能为空"}, status=400) results = search_by_any_field(keyword) - return JsonResponse({"status": "success", "data": _attach_image_urls(request, results)}) + data = _attach_writer_names(_attach_image_urls(request, results)) + return JsonResponse({"status": "success", "data": data}) except Exception as e: return JsonResponse({"status": "error", "message": str(e)}, status=500) @@ -140,7 +157,8 @@ def get_all_data(request): """获取所有数据""" try: results = search_all() - return JsonResponse({"status": "success", "data": _attach_image_urls(request, results)}) + data = _attach_writer_names(_attach_image_urls(request, results)) + return JsonResponse({"status": "success", "data": data}) except Exception as e: return JsonResponse({"status": "error", "message": str(e)}, status=500) @@ -493,7 +511,11 @@ def upload_page(request): from django.shortcuts import redirect return redirect("/accounts/login/") user_id_qs = request.GET.get("user_id") - context = {"user_id": user_id_qs or session_user_id} + me = get_user_by_id(session_user_id) or {} + context = { + "user_id": user_id_qs or session_user_id, + "username": me.get("username"), + } return render(request, "elastic/upload.html", context) @@ -666,6 +688,7 @@ def manage_page(request): from django.shortcuts import redirect return redirect("/accounts/login/") + me = get_user_by_id(session_user_id) or {} is_admin = int(request.session.get("permission", 1)) == 0 if is_admin: raw_results = search_all() @@ -690,6 +713,7 @@ def manage_page(request): "results": results, "is_admin": is_admin, "user_id": session_user_id, + "username": me.get("username"), }, ) # 规范化键,避免模板点号访问下划线前缀字段 @@ -779,6 +803,7 @@ def user_manage(request): user_id_qs = request.GET.get("user_id") context = { "user_id": user_id_qs or session_user_id, + "username": me.get("username"), "is_admin": is_admin, "is_tutor": (not is_admin) and has_manage, "is_student": (not is_admin) and (not has_manage), @@ -796,7 +821,11 @@ def registration_code_manage_page(request): from django.shortcuts import redirect return redirect("/main/home/") user_id_qs = request.GET.get("user_id") - context = {"user_id": user_id_qs or session_user_id} + me = get_user_by_id(session_user_id) or {} + context = { + "user_id": user_id_qs or session_user_id, + "username": me.get("username"), + } return render(request, "elastic/registration_codes.html", context) @require_http_methods(["GET"]) diff --git a/main/views.py b/main/views.py index db02461..4461318 100644 --- a/main/views.py +++ b/main/views.py @@ -14,8 +14,8 @@ def home(request): user_id_qs = request.GET.get("user_id") uid = user_id_qs or session_user_id perm = request.session.get("permission") + u = get_user_by_id(uid) if uid is not None else None if perm is None and uid is not None: - u = get_user_by_id(uid) try: perm = int((u or {}).get("permission", 1)) except Exception: @@ -28,6 +28,7 @@ def home(request): perm = 1 context = { "user_id": uid, + "username": (u or {}).get("username"), "is_admin": (int(perm) == 0), } - return render(request, "main/home.html", context) \ No newline at end of file + return render(request, "main/home.html", context)