From 1131c7705d5f20ea143efc86a0eeb8e5e83575f9 Mon Sep 17 00:00:00 2001 From: 11617 <1161733918@qq.com> Date: Thu, 13 Oct 2022 15:22:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=96=87=E4=BB=B6=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App/migrations/0022_packageupload.py | 25 +++++++ .../0023_remove_packageupload_package_desc.py | 17 +++++ App/models.py | 12 +++- App/urls.py | 6 +- App/views.py | 66 ++++++++++++++++-- static/images/package.jpg | Bin 0 -> 8328 bytes static/images/video.jpg | Bin 0 -> 7936 bytes templates/function/user.html | 31 +++++++- templates/index.html | 17 +++-- templates/nav/dashboard.html | 41 ++++++++--- templates/nav/upload.html | 4 +- templates/register.html | 19 +---- templates/template.html | 21 +++++- 13 files changed, 213 insertions(+), 46 deletions(-) create mode 100644 App/migrations/0022_packageupload.py create mode 100644 App/migrations/0023_remove_packageupload_package_desc.py create mode 100644 static/images/package.jpg create mode 100644 static/images/video.jpg diff --git a/App/migrations/0022_packageupload.py b/App/migrations/0022_packageupload.py new file mode 100644 index 0000000..434affe --- /dev/null +++ b/App/migrations/0022_packageupload.py @@ -0,0 +1,25 @@ +# Generated by Django 3.2.9 on 2022-10-13 01:51 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('App', '0021_alter_videoupload_video_title'), + ] + + operations = [ + migrations.CreateModel( + name='packageUpload', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('username', models.CharField(max_length=100)), + ('package_time', models.DateTimeField(auto_now_add=True)), + ('package_title', models.CharField(max_length=200, unique=True)), + ('package_size', models.IntegerField(default=0)), + ('package_desc', models.TextField(default='')), + ('downloads', models.IntegerField(default=0)), + ], + ), + ] diff --git a/App/migrations/0023_remove_packageupload_package_desc.py b/App/migrations/0023_remove_packageupload_package_desc.py new file mode 100644 index 0000000..b129325 --- /dev/null +++ b/App/migrations/0023_remove_packageupload_package_desc.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.9 on 2022-10-13 02:13 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('App', '0022_packageupload'), + ] + + operations = [ + migrations.RemoveField( + model_name='packageupload', + name='package_desc', + ), + ] diff --git a/App/models.py b/App/models.py index 101bb5c..a5da29a 100644 --- a/App/models.py +++ b/App/models.py @@ -73,4 +73,14 @@ class videoUpload(models.Model): views = models.IntegerField(default=0) video_image = models.URLField(max_length=10000, default='') def __str__(self): - return self.username \ No newline at end of file + return self.username + +class packageUpload(models.Model): + username = models.CharField(max_length=100) + package_time = models.DateTimeField(auto_now_add=True) + package_title = models.CharField(max_length=200, unique=True) + package_size = models.IntegerField(default=0) + #package_desc = models.TextField(default="") + downloads = models.IntegerField(default=0) + def __str__(self): + return self.username diff --git a/App/urls.py b/App/urls.py index 2154b4d..814e4fd 100644 --- a/App/urls.py +++ b/App/urls.py @@ -21,7 +21,9 @@ urlpatterns = [ path('paperview/', views.paperDetail, name='paperDetail'), path('video/', views.videoView, name='videoView'), path('videolist/', views.videoList, name='videoList'), - #static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + # static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) path('videoView/', views.stream_video, name='stream_video'), path('videoDownload/', views.videoDownload, name='videoDownload'), -] \ No newline at end of file + path('packagelist/', views.packagelist, name='packagelist'), + path('packageDownload/', views.packageDownload, name='packageDownload'), +] diff --git a/App/views.py b/App/views.py index 751909b..e264fe0 100644 --- a/App/views.py +++ b/App/views.py @@ -39,7 +39,16 @@ def login(request): password = form.cleaned_data.get('loginPass') user = authenticate(username=username, password=password) auth.login(request, user) - info = getAddr(request.META['REMOTE_ADDR']) + #info = getAddr(request.META['REMOTE_ADDR']) + info = { + "status": "success", + "query": "none", + "city": "none", + "country": "none", + "regionName": "none", + "lat": "none", + "lon": "none" + } if info['status'] == 'success': Login.objects.create(username=username, client_addr=info['query'], city=info['city'], country=info['country'], region=info['regionName'], latitude=info['lat'], @@ -59,7 +68,9 @@ def userinfo(request): image_data = Upload.objects.filter(username=request.user.username).order_by('-upload_time')[:5] blog_data = paper.objects.filter(username=request.user.username).order_by('-paper_time')[:5] task_data = Task.objects.filter(username=request.user.username).order_by('-task_time')[:5] - return render(request, 'function/user.html', {'name': auth.get_user(request).username, 'login_data': login_data, 'image_data': image_data, 'blog_data': blog_data, 'task_data': task_data, 'regtime': auth.get_user(request).date_joined}) + video_data = videoUpload.objects.filter(username=request.user.username).order_by('-video_time')[:5] + package_data = packageUpload.objects.filter(username=request.user.username).order_by('-package_time')[:5] + return render(request, 'function/user.html', {'name': auth.get_user(request).username, 'login_data': login_data, 'image_data': image_data, 'blog_data': blog_data, 'task_data': task_data, 'video_data': video_data, 'package_data': package_data, 'regtime': auth.get_user(request).date_joined}) def logout(request): @@ -81,13 +92,12 @@ def register(request): email = request.POST.get('email') password = form.cleaned_data.get('password') likes = request.POST.getlist('like') - role = request.POST.get('role') + role = "False" try: User.objects.create_user(username=username, email=email, password=password, first_name=first_name, last_name=last_name, is_staff=role, likes=likes) except Exception as e: return render(request, 'register.html', {'errors': e}) - return redirect(reverse('App:login')) else: return render(request, 'register.html', {'errors': form.errors}) @@ -121,6 +131,9 @@ def dashboard(request, type): elif type == 'video': data = getData(username, t, 'video') table = videoUpload.objects.order_by('-video_time').all()[:100] + elif type == 'package': + data = getData(username, t, 'package') + table = packageUpload.objects.order_by('package_time').all()[:100] else: data = table = "" return render(request, 'nav/dashboard.html', {'data': data, 'table': table, 'type': type}) @@ -172,6 +185,26 @@ def upload(request): Upload.objects.create(username=auth.get_user(request).username, file_name=file.name, file_path=file.name,file_size=file.size, url_path=url_path['url']).save() data = {'success': 1, 'message': "上传成功", 'url': url_path['url']} return JsonResponse(data) + elif ftype == 'package': + file = request.FILES.getlist('file', None) + data = {'status': 'success', 'msg': []} + file_path = os.path.join(settings.MEDIA_ROOT, 'package') + for i in file: + if not os.path.exists(file_path): + os.makedirs(file_path) + file_path = os.path.join(file_path, i.name) + package = packageUpload.objects.filter(username=auth.get_user(request).username,package_title=i.name,package_size=i.size) + if package.exists(): + package.update(username=auth.get_user(request).username) + else: + try: + packageUpload.objects.create(username=auth.get_user(request).username, package_title=i.name, package_size=i.size).save() + with open(file_path, 'wb') as f: + for chunk in i.chunks(): + f.write(chunk) + except Exception as e: + print(e) + return JsonResponse(data) else: file = request.FILES.getlist('file', None) data = {'status': 'success', 'msg': []} @@ -199,10 +232,13 @@ def getData(username, time, type='login'): data.update({str(date): paper.objects.filter(paper_time__startswith=date).count()}) elif type == 'video': data.update({str(date): videoUpload.objects.filter(video_time__startswith=date).count()}) + elif type == 'package': + data.update({str(date): packageUpload.objects.filter(package_time__startswith=date).count()}) + print(data) return data -def getAddr(ip): +def getAddr(ip=None): ip = requests.get('https://httpbin.org/ip').json()['origin'] info = requests.get('http://ip-api.com/json/' + ip + '?lang=zh-CN') info = info.json() @@ -347,5 +383,23 @@ def videoDownload(request, id): response = FileResponse(file) response['Content-Type'] = 'application/octet-stream' response['Content-Disposition'] = 'attachment;filename="{}"'.format(quote(file_name)) - #messages.error(request, '下载成功') return response + +def packagelist(request): + data = packageUpload.objects.all().order_by('package_time') + return render(request, 'nav/packagelist.html', {'data': data}) + +def packageDownload(request, id): + try: + data = packageUpload.objects.filter(id=id) + data.update(downloads=data.get().downloads+1) + file_path = os.path.join(settings.MEDIA_ROOT, 'package', data.get().package_title) + file_name = os.path.basename(file_path) + file = open(file_path, 'rb') + response = FileResponse(file) + response['Content-Type'] = 'application/octet-stream' + response['Content-Disposition'] = 'attachment;filename="{}"'.format(quote(file_name)) + return response + except Exception as e: + print(e) + return HttpResponse('内部错误') \ No newline at end of file diff --git a/static/images/package.jpg b/static/images/package.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ea579c51070bab839a6c0bd9ffa9fcdbfec729f9 GIT binary patch literal 8328 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 S1kRoWK8Cvh0000000004DksGN literal 0 HcmV?d00001 diff --git a/static/images/video.jpg b/static/images/video.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d74e47c657531bfba3d18e2a2049185437951453 GIT binary patch literal 7936 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 E7k3O%-~a#s literal 0 HcmV?d00001 diff --git a/templates/function/user.html b/templates/function/user.html index f8b0e30..be0489d 100644 --- a/templates/function/user.html +++ b/templates/function/user.html @@ -15,11 +15,19 @@

你好,{{ name }}

本站点功能依旧在开发当中,欢迎你的使用及反馈,以下为你在本站的操作轨迹。

注册时间:{{ regtime }}

+
+

版本更新日志:v1.10.11

+

1、版本修改了登录逻辑,不在记录非公网的登录位置

+

2、优化注册页面

+

3、新增文件上传下载功能

+

4、优化了图片显示方式

+

5、用户界面添加视频及文件归档

+

6、增加仪表盘界面的文件上传数据

-
+
@@ -32,6 +40,26 @@ {% endfor %}
+
+

文件存储

+

显示5次最近文件上传时数据,获取所有数据查看{% url 'App:packagelist' %}

+
    + {% for i in package_data %} +
  • 上传时间:{{ i.package_time }}  下载地址: {{ i.package_title }} +
  • + {% endfor %} +
+
+
+

视频存储

+

显示5次最近视频上传数据,获取所有数据查看{% url 'App:videoList' %}

+
    + {% for i in video_data %} +
  • 上传时间:{{ i.video_time }}  观看地址:{{ i.video_title }} +
  • + {% endfor %} +
+

图床数据

最近5次,获取所有数据查看我的相册

@@ -65,6 +93,7 @@ {% endfor %}
+
{% endblock %} diff --git a/templates/index.html b/templates/index.html index 222d908..02c9a3e 100644 --- a/templates/index.html +++ b/templates/index.html @@ -7,9 +7,6 @@ {% endblock %} {% block login %} -{# #}
@@ -119,7 +116,7 @@ -

事件处理

+

任务处理

请在规定时间内完成规定任务,此功能仅支持内部使用,任务下达会在课堂中提醒,任务完成过程中请截图保留。未完成将得到奖励、

点击查看

@@ -135,7 +132,17 @@
+ +

文件上传

+

课程文件上传文件库

+

立即上传

+
+
+

视频上传

diff --git a/templates/nav/dashboard.html b/templates/nav/dashboard.html index c56d9d9..7446909 100644 --- a/templates/nav/dashboard.html +++ b/templates/nav/dashboard.html @@ -36,15 +36,9 @@ - @@ -211,6 +205,37 @@
+ {% elif type == 'package' %} +
+

文件数据

+
+ + +

[仅显示最近100条]

+
+ + + + + + + + + + + + {% for i in table %} + + + + + + + + {% endfor %} + +
上传时间上传用户文件标题文件大小下载量
{{ i.package_time }}{{ i.username }}{{ i.package_title }}{{ i.package_size |filesizeformat }}{{ i.downloads }}
+
{% endif %} diff --git a/templates/nav/upload.html b/templates/nav/upload.html index beaa405..e8cbf4d 100644 --- a/templates/nav/upload.html +++ b/templates/nav/upload.html @@ -34,7 +34,7 @@ theme: 'fas', language: 'zh', uploadUrl: '{% url 'App:upload' %}?type={{ type }}', - allowedFileExtensions: ['jpg', 'png', 'gif','mp4'], + allowedFileExtensions: ['jpg', 'png', 'gif','mp4', 'gz', 'zip', 'exe', 'xz', 'tar'], uploadExtraData: function () { return { 'csrfmiddlewaretoken': $('input[name=csrfmiddlewaretoken]').val() @@ -62,7 +62,7 @@ $("#test-upload").fileinput({ 'theme': 'fas', 'showPreview': false, - 'allowedFileExtensions': ['jpg', 'png', 'gif','mp4'], + 'allowedFileExtensions': ['jpg', 'png', 'gif','mp4', 'gz', 'zip', 'exe', 'xz', 'tar'], 'elErrorContainer': '#errorBlock' }); diff --git a/templates/register.html b/templates/register.html index b8ddd11..1a01f67 100644 --- a/templates/register.html +++ b/templates/register.html @@ -108,9 +108,8 @@
- @ + placeholder="用于登录" required>
用户名必须填写
@@ -142,22 +141,6 @@ {% endif %}
-

来宾类型

- -
-
- - -
-
- - -
-
- -
-
diff --git a/templates/template.html b/templates/template.html index 02ab44e..f0ca99a 100644 --- a/templates/template.html +++ b/templates/template.html @@ -82,6 +82,10 @@ + + +
@@ -137,6 +141,14 @@ 视频站 +
  • + + + + + 文件库 + +
  • @@ -189,11 +201,14 @@
  • + class="nav-link p-0 text-muted" target="_blank">SQL在线练习 + + class="nav-link p-0 text-muted" target="_blank">API调试工具 + + class="nav-link p-0 text-muted" target="_blank">Linux命令检索 +