from django.shortcuts import render, redirect from django.http import JsonResponse from .models import ActivitySetting, Blessing, Danmu from .forms import DanmuForm, ActivitySettingForm # Create your views here. def index(request): """主页面视图""" setting = ActivitySetting.objects.first() or ActivitySetting.objects.create() danmus = Danmu.objects.filter(is_approved=True).order_by('-created_at') context = { 'setting': setting, 'danmus': danmus, } return render(request, 'activity/index.html', context) def submit(request): """扫码提交视图""" random_blessings = Blessing.objects.order_by('?')[:5] if request.method == 'POST': form = DanmuForm(request.POST, request.FILES) if form.is_valid(): form.save() return redirect('index') else: form = DanmuForm() context = { 'form': form, 'random_blessings': random_blessings, } return render(request, 'activity/submit.html', context) def admin_review(request): """管理员审核视图""" danmus = Danmu.objects.filter(is_approved=False).order_by('-created_at') if request.method == 'POST': danmu_id = request.POST.get('danmu_id') action = request.POST.get('action') if danmu_id and action: try: danmu = Danmu.objects.get(id=danmu_id) if action == 'approve': danmu.is_approved = True danmu.save() elif action == 'reject': danmu.delete() except Danmu.DoesNotExist: pass return redirect('admin_review') context = { 'danmus': danmus, } return render(request, 'activity/admin_review.html', context) def setting(request): """设置视图""" setting = ActivitySetting.objects.first() or ActivitySetting.objects.create() if request.method == 'POST': form = ActivitySettingForm(request.POST, request.FILES, instance=setting) if form.is_valid(): form.save() return redirect('index') else: form = ActivitySettingForm(instance=setting) context = { 'form': form, 'setting': setting, } return render(request, 'activity/setting.html', context) def api_danmu(request): """获取实时弹幕API""" danmus = Danmu.objects.filter(is_approved=True).order_by('-created_at')[:50] danmu_list = [ { 'id': danmu.id, 'name': danmu.name, 'content': danmu.content, 'image': danmu.image.url if danmu.image else None, 'created_at': danmu.created_at.strftime('%Y-%m-%d %H:%M:%S'), } for danmu in danmus ] return JsonResponse({'danmus': danmu_list})