完成一个基本的弹幕功能
This commit is contained in:
98
activity/views.py
Normal file
98
activity/views.py
Normal file
@@ -0,0 +1,98 @@
|
||||
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})
|
||||
Reference in New Issue
Block a user