2
0

7 Ревизии e122f563cb ... 136fa161cb

Автор SHA1 Съобщение Дата
  yang yi 136fa161cb # db:将sqllite3数据文件加入版本控制;已完成轮播图数据录入;已完成学院简介模块的文章录入; преди 2 седмици
  yang yi def6a4f236 # static:学院简介模块的文章进行修正;并储存到数据库中 преди 2 седмици
  yang yi 5d5b79b2e3 # feat:学院简介模块的数据修改为从数据库中获取 преди 2 седмици
  yang yi 03166ec9c1 # feat:主页轮播图修改为使用数据库中记录的轮播图 преди 2 седмици
  yang yi 80fd49ddb3 # doc:记录django模型的使用过程; преди 2 седмици
  yang yi 5efef933c0 # feat:创建文章详情模板;创建公共的404错误模板; преди 2 седмици
  yang yi 0bf26381fc # feat:创建一个common模块用于管理公共的数据模型;创建轮播图模型和文章模型; преди 2 седмици
променени са 28 файла, в които са добавени 798 реда и са изтрити 125 реда
  1. 3 2
      pythonweb/aboutApp/templates/about.html
  2. 3 32
      pythonweb/aboutApp/views.py
  3. 7 0
      pythonweb/common/admin.py
  4. 6 0
      pythonweb/common/apps.py
  5. 42 0
      pythonweb/common/migrations/0001_initial.py
  6. 23 0
      pythonweb/common/migrations/0002_auto_20260422_2008.py
  7. 17 0
      pythonweb/common/migrations/0003_alter_banner_options.py
  8. 64 0
      pythonweb/common/models.py
  9. 19 0
      pythonweb/common/templates/article.html
  10. 3 0
      pythonweb/common/tests.py
  11. 15 0
      pythonweb/common/views.py
  12. BIN
      pythonweb/db.sqlite3
  13. 5 5
      pythonweb/homeApp/views.py
  14. 1 0
      pythonweb/pythonweb/settings.py
  15. 2 0
      pythonweb/pythonweb/urls.py
  16. 418 0
      pythonweb/templates/404.html
  17. 70 2
      readme.md
  18. 14 0
      图片素材.md
  19. 10 10
      文章/学院简介/专业介绍/数字媒体技术.md
  20. 11 11
      文章/学院简介/专业介绍/智能科学与技术.md
  21. 10 10
      文章/学院简介/专业介绍/物联网工程.md
  22. 20 20
      文章/学院简介/专业介绍/网络工程.md
  23. 10 10
      文章/学院简介/专业介绍/计算机科学与技术.md
  24. 10 10
      文章/学院简介/专业介绍/软件工程.md
  25. 3 3
      文章/学院简介/领导分工/党总支书记 徐燕萍.md
  26. 3 1
      文章/学院简介/领导分工/杨德牛 副教授.md
  27. 5 5
      文章/学院简介/领导分工/胡 毅 副教授.md
  28. 4 4
      文章/学院简介/领导分工/院长朱子江.md

+ 3 - 2
pythonweb/aboutApp/templates/about.html

@@ -40,13 +40,14 @@
             <div class="model-details">
                 {{content|safe }}
             </div>
-            {% else %}
+            {% elif type == 'list'%}
 <!--            列表-->
             <ul class="list-group">
                 {% for item in list %}
-                <a href="{{item.url}}" class="list-group-item">{{item.title}}<span class="pull-right">{{ item.date }}</span></a>
+                <a href="{%url 'article' id=item.id%}" target="_blank" class="list-group-item">{{item.title}}<span class="pull-right">{{ item.created_at }}</span></a>
                 {% endfor %}
             </ul>
+            {% else %}
             {% endif %}
         </div>
     </div>

+ 3 - 32
pythonweb/aboutApp/views.py

@@ -1,5 +1,6 @@
 import markdown
 from django.shortcuts import render
+from common.models import Article
 
 
 def survey(request):
@@ -23,22 +24,7 @@ def survey(request):
 
 
 def leader(request):
-    art_list = [
-        {
-            'id':'1',
-            'title':'院长',
-            'content':'',
-            'img_url':'',
-            'date':'2026-04-22',
-        },
-        {
-            'id': '2',
-            'title': '副院长',
-            'content': '',
-            'img_url': '',
-            'date': '2026-04-22',
-        },
-    ]
+    art_list = Article.objects.filter(category='leader').all()
     context = {
         'title': '领导分工',
         'content': '',
@@ -65,22 +51,7 @@ def organization(request):
 
 
 def major(request):
-    major_list = [
-        {
-            'id': '1',
-            'title': '计算机科学与技术',
-            'content': '',
-            'img_url': '',
-            'date': '2026-04-22',
-        },
-        {
-            'id': '2',
-            'title': '软件工程',
-            'content': '',
-            'img_url': '',
-            'date': '2026-04-22',
-        },
-    ]
+    major_list = Article.objects.filter(category='professional').all()
     context = {
         'title': '专业介绍',
         'content': '',

+ 7 - 0
pythonweb/common/admin.py

@@ -0,0 +1,7 @@
+from django.contrib import admin
+
+from common.models import Article, ArticleAdmin, Banner
+
+# Register your models here.
+admin.site.register(Article,ArticleAdmin)
+admin.site.register(Banner)

+ 6 - 0
pythonweb/common/apps.py

@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class CommonConfig(AppConfig):
+    default_auto_field = 'django.db.models.BigAutoField'
+    name = 'common'

+ 42 - 0
pythonweb/common/migrations/0001_initial.py

@@ -0,0 +1,42 @@
+# Generated by Django 3.2.24 on 2026-04-22 10:58
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Article',
+            fields=[
+                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('title', models.CharField(max_length=200, verbose_name='标题')),
+                ('markdown_content', models.TextField(verbose_name='markdown内容')),
+                ('html_content', models.TextField(verbose_name='html内容')),
+                ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
+                ('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
+                ('category', models.CharField(choices=[('professional', '专业介绍'), ('leader', '领导分工'), ('academic_leader', '学院学科建设带头人教师'), ('computer_science', '计算机系教师'), ('software_engineering', '软件工程系教师'), ('digital_media', '数字媒体技术系教师'), ('iot_networking', '物联网与网络工程系教师'), ('math_teaching', '数学教研室教师'), ('party_work', '党政学工队伍教师'), ('scientific', '教学科研'), ('party_dynamic', '党建动态'), ('youth_dynamic', '团学动态'), ('admissions', '招生'), ('employment', '就业')], max_length=50, verbose_name='文章分类')),
+                ('cover', models.URLField(verbose_name='封面')),
+            ],
+            options={
+                'ordering': ['-created_at'],
+            },
+        ),
+        migrations.CreateModel(
+            name='Banner',
+            fields=[
+                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('title', models.CharField(max_length=200, verbose_name='标题')),
+                ('url', models.URLField(verbose_name='链接')),
+                ('order', models.IntegerField(default=0, verbose_name='序号')),
+            ],
+            options={
+                'ordering': ['order'],
+            },
+        ),
+    ]

+ 23 - 0
pythonweb/common/migrations/0002_auto_20260422_2008.py

@@ -0,0 +1,23 @@
+# Generated by Django 3.2.24 on 2026-04-22 12:08
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('common', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='article',
+            name='cover',
+            field=models.URLField(blank=True, verbose_name='封面'),
+        ),
+        migrations.AlterField(
+            model_name='article',
+            name='html_content',
+            field=models.TextField(blank=True, verbose_name='html内容'),
+        ),
+    ]

+ 17 - 0
pythonweb/common/migrations/0003_alter_banner_options.py

@@ -0,0 +1,17 @@
+# Generated by Django 3.2.24 on 2026-04-22 12:17
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('common', '0002_auto_20260422_2008'),
+    ]
+
+    operations = [
+        migrations.AlterModelOptions(
+            name='banner',
+            options={'ordering': ['-order']},
+        ),
+    ]

+ 64 - 0
pythonweb/common/models.py

@@ -0,0 +1,64 @@
+from django.contrib import admin
+from django.db import models
+
+
+class Article(models.Model):
+    CATEGORY_CHOICES = [
+        ('professional', '专业介绍'),
+        ('leader', '领导分工'),
+        ('academic_leader', '学院学科建设带头人教师'),
+        ('computer_science', '计算机系教师'),
+        ('software_engineering', '软件工程系教师'),
+        ('digital_media', '数字媒体技术系教师'),
+        ('iot_networking', '物联网与网络工程系教师'),
+        ('math_teaching', '数学教研室教师'),
+        ('party_work', '党政学工队伍教师'),
+        ('scientific', '教学科研'),
+        ('party_dynamic', '党建动态'),
+        ('youth_dynamic', '团学动态'),
+        ('admissions', '招生'),
+        ('employment', '就业'),
+    ]
+    title = models.CharField(max_length=200, verbose_name='标题')
+    markdown_content = models.TextField(verbose_name='markdown内容')
+    html_content = models.TextField(verbose_name='html内容',blank=True)
+    created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
+    updated_at = models.DateTimeField(auto_now=True, verbose_name='更新时间')
+    category = models.CharField(max_length=50, choices=CATEGORY_CHOICES, verbose_name='文章分类')
+    cover = models.URLField(verbose_name='封面',blank=True)
+
+    class Meta:
+        ordering = ['-created_at']
+
+    def __str__(self):
+        return self.title
+
+class ArticleAdmin(admin.ModelAdmin):
+    # 列表显示字段
+    list_display = ['title', 'category', 'created_at','updated_at']
+
+    # 列表页链接字段(可点击进入编辑)
+    list_display_links = ['title']
+
+    # 侧边栏过滤器
+    list_filter = [
+        'category',  # 分类过滤器
+    ]
+
+    # 搜索框
+    search_fields = ['title']
+
+    # 每页显示数量
+    list_per_page = 20
+
+
+class Banner(models.Model):
+    title = models.CharField(max_length=200, verbose_name='标题')
+    url = models.URLField(verbose_name='链接')
+    order = models.IntegerField(default=0, verbose_name='序号')
+
+    class Meta:
+        ordering = ['-order']
+
+    def __str__(self):
+        return self.title

+ 19 - 0
pythonweb/common/templates/article.html

@@ -0,0 +1,19 @@
+{% extends "base.html" %}
+
+{% block title %}
+{{title}}
+{% endblock %}
+
+{% block content %}
+<!-- 主体内容 -->
+<div class="container">
+    <div class="col-lg-12">
+        <div class="model-details-title">
+            <h1>{{title}}</h1>
+        </div>
+        <div class="model-details">
+            {{content|safe }}
+        </div>
+    </div>
+</div>
+{% endblock %}

+ 3 - 0
pythonweb/common/tests.py

@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.

+ 15 - 0
pythonweb/common/views.py

@@ -0,0 +1,15 @@
+import markdown
+from django.shortcuts import render
+from common.models import Article
+
+
+# Create your views here.
+def article(request,id):
+    art = Article.objects.filter(id=id).first()
+    if art is None:
+        return render(request, '404.html')
+    context = {
+        'title':art.title,
+        'content':markdown.markdown(art.markdown_content),
+    }
+    return render(request, 'article.html',context)

BIN
pythonweb/db.sqlite3


+ 5 - 5
pythonweb/homeApp/views.py

@@ -1,12 +1,12 @@
 from django.shortcuts import render
 
+from common.models import Banner
+
+
 # Create your views here.
 def home(request):
-    imgs = [
-        {'title':'','url':'https://www-new.gwng.edu.cn/_upload/article/images/ea/52/92efb43545b08f9fc6cff3d4da12/3d9e5fde-b426-47b5-b227-01ce75bed969.png'},
-        {'title':'','url':'https://www-new.gwng.edu.cn/_upload/article/images/70/97/4eb2553a42d0857d7e84f4da2a50/277ed5c3-1c74-4a28-a138-99a805356fe1.jpg'},
-        {'title':'','url':'https://www-new.gwng.edu.cn/_upload/article/images/d6/76/98d987954758820d35e9a20bac79/4fd9a0ae-f81f-4742-8553-e3fdce8637e9.jpg'},
-    ]
+    # 轮播图
+    imgs = Banner.objects.all().order_by('order')
     party_works = [{'title':'党建工作','date':'2026-04-22','url':''},{'title':'党建工作','date':'2026-04-22','url':''}]
     youth_works = [{'title':'团学工作','date':'2026-04-22','url':''},{'title':'团学工作','date':'2026-04-22','url':''}]
     admissions = [{'title':'招生信息','date':'2026-04-22','url':''},{'title':'招生信息','date':'2026-04-22','url':''}]

+ 1 - 0
pythonweb/pythonweb/settings.py

@@ -37,6 +37,7 @@ INSTALLED_APPS = [
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
+    'common',
     'homeApp',#主页
     'aboutApp',#学院简介
     'teamApp',#教师团队

+ 2 - 0
pythonweb/pythonweb/urls.py

@@ -19,10 +19,12 @@ from homeApp.views import home
 from scientificApp.views import index
 import scientificApp
 from django.conf.urls import include
+from common.views import article
 
 urlpatterns = [
     path('admin/', admin.site.urls),
     path('',home,name='home'),
+    path('article/<str:id>',article,name='article'),
     path('aboutApp/', include('aboutApp.urls')),
     path('teamApp/', include('teamApp.urls')),
     path('scientific',scientificApp.views.index, name='scientific_index'),

+ 418 - 0
pythonweb/templates/404.html

@@ -0,0 +1,418 @@
+{% extends "base.html" %}
+
+{% block title %}
+404 找不到对应的资源
+{% endblock %}
+
+{% block content %}
+    <style>
+      .main {
+        background: #000;
+        height: 100vh;
+        overflow: hidden;
+        display: flex;
+        font-family: Anton, sans-serif;
+        justify-content: center;
+        align-items: center;
+        -webkit-perspective: 1000px;
+        perspective: 1000px;
+      }
+
+      .main div {
+        -webkit-transform-style: preserve-3d;
+        transform-style: preserve-3d;
+      }
+
+      .rail {
+        position: absolute;
+        width: 100%;
+        height: 100%;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        -webkit-transform: rotateX(-30deg) rotateY(-30deg);
+        transform: rotateX(-30deg) rotateY(-30deg);
+      }
+
+      .rail .stamp {
+        position: absolute;
+        width: 200px;
+        height: 200px;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        background: #141414;
+        color: #fff;
+        font-size: 7rem;
+      }
+
+      .rail .stamp:nth-child(1) {
+        -webkit-animation: stampSlide 40s -2.3s linear infinite;
+        animation: stampSlide 40s -2.3s linear infinite;
+      }
+
+      .rail .stamp:nth-child(2) {
+        -webkit-animation: stampSlide 40s -4.3s linear infinite;
+        animation: stampSlide 40s -4.3s linear infinite;
+      }
+
+      .rail .stamp:nth-child(3) {
+        -webkit-animation: stampSlide 40s -6.3s linear infinite;
+        animation: stampSlide 40s -6.3s linear infinite;
+      }
+
+      .rail .stamp:nth-child(4) {
+        -webkit-animation: stampSlide 40s -8.3s linear infinite;
+        animation: stampSlide 40s -8.3s linear infinite;
+      }
+
+      .rail .stamp:nth-child(5) {
+        -webkit-animation: stampSlide 40s -10.3s linear infinite;
+        animation: stampSlide 40s -10.3s linear infinite;
+      }
+
+      .rail .stamp:nth-child(6) {
+        -webkit-animation: stampSlide 40s -12.3s linear infinite;
+        animation: stampSlide 40s -12.3s linear infinite;
+      }
+
+      .rail .stamp:nth-child(7) {
+        -webkit-animation: stampSlide 40s -14.3s linear infinite;
+        animation: stampSlide 40s -14.3s linear infinite;
+      }
+
+      .rail .stamp:nth-child(8) {
+        -webkit-animation: stampSlide 40s -16.3s linear infinite;
+        animation: stampSlide 40s -16.3s linear infinite;
+      }
+
+      .rail .stamp:nth-child(9) {
+        -webkit-animation: stampSlide 40s -18.3s linear infinite;
+        animation: stampSlide 40s -18.3s linear infinite;
+      }
+
+      .rail .stamp:nth-child(10) {
+        -webkit-animation: stampSlide 40s -20.3s linear infinite;
+        animation: stampSlide 40s -20.3s linear infinite;
+      }
+
+      .rail .stamp:nth-child(11) {
+        -webkit-animation: stampSlide 40s -22.3s linear infinite;
+        animation: stampSlide 40s -22.3s linear infinite;
+      }
+
+      .rail .stamp:nth-child(12) {
+        -webkit-animation: stampSlide 40s -24.3s linear infinite;
+        animation: stampSlide 40s -24.3s linear infinite;
+      }
+
+      .rail .stamp:nth-child(13) {
+        -webkit-animation: stampSlide 40s -26.3s linear infinite;
+        animation: stampSlide 40s -26.3s linear infinite;
+      }
+
+      .rail .stamp:nth-child(14) {
+        -webkit-animation: stampSlide 40s -28.3s linear infinite;
+        animation: stampSlide 40s -28.3s linear infinite;
+      }
+
+      .rail .stamp:nth-child(15) {
+        -webkit-animation: stampSlide 40s -30.3s linear infinite;
+        animation: stampSlide 40s -30.3s linear infinite;
+      }
+
+      .rail .stamp:nth-child(16) {
+        -webkit-animation: stampSlide 40s -32.3s linear infinite;
+        animation: stampSlide 40s -32.3s linear infinite;
+      }
+
+      .rail .stamp:nth-child(17) {
+        -webkit-animation: stampSlide 40s -34.3s linear infinite;
+        animation: stampSlide 40s -34.3s linear infinite;
+      }
+
+      .rail .stamp:nth-child(18) {
+        -webkit-animation: stampSlide 40s -36.3s linear infinite;
+        animation: stampSlide 40s -36.3s linear infinite;
+      }
+
+      .rail .stamp:nth-child(19) {
+        -webkit-animation: stampSlide 40s -38.3s linear infinite;
+        animation: stampSlide 40s -38.3s linear infinite;
+      }
+
+      .rail .stamp:nth-child(20) {
+        -webkit-animation: stampSlide 40s -40.3s linear infinite;
+        animation: stampSlide 40s -40.3s linear infinite;
+      }
+
+      @-webkit-keyframes stampSlide {
+        0% {
+          -webkit-transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)
+            translateY(130px);
+          transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)
+            translateY(130px);
+        }
+
+        100% {
+          -webkit-transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)
+            translateY(-3870px);
+          transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)
+            translateY(-3870px);
+        }
+      }
+
+      @keyframes stampSlide {
+        0% {
+          -webkit-transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)
+            translateY(130px);
+          transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)
+            translateY(130px);
+        }
+
+        100% {
+          -webkit-transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)
+            translateY(-3870px);
+          transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)
+            translateY(-3870px);
+        }
+      }
+
+      .world {
+        -webkit-transform: rotateX(-30deg) rotateY(-30deg);
+        transform: rotateX(-30deg) rotateY(-30deg);
+      }
+
+      .world .forward {
+        position: absolute;
+        -webkit-animation: slide 2s linear infinite;
+        animation: slide 2s linear infinite;
+      }
+
+      .world .box {
+        width: 200px;
+        height: 200px;
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        -webkit-animation: roll 2s cubic-bezier(1, 0.01, 1, 1) infinite;
+        animation: roll 2s cubic-bezier(1, 0.01, 1, 1) infinite;
+      }
+
+      .world .box .wall {
+        position: absolute;
+        width: 200px;
+        height: 200px;
+        background: rgba(10, 10, 10, 0.8);
+        border: 1px solid #fafafa;
+        box-sizing: border-box;
+      }
+
+      .world .box .wall::before {
+        content: "";
+        position: absolute;
+        width: 100%;
+        height: 100%;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        color: #fff;
+        font-size: 7rem;
+      }
+
+      .world .box .wall:nth-child(1) {
+        -webkit-transform: translateZ(100px);
+        transform: translateZ(100px);
+      }
+
+      .world .box .wall:nth-child(2) {
+        -webkit-transform: rotateX(180deg) translateZ(100px);
+        transform: rotateX(180deg) translateZ(100px);
+      }
+
+      .world .box .wall:nth-child(3) {
+        -webkit-transform: rotateX(90deg) translateZ(100px);
+        transform: rotateX(90deg) translateZ(100px);
+      }
+
+      .world .box .wall:nth-child(3)::before {
+        -webkit-transform: rotateX(180deg) rotateZ(90deg) translateZ(-1px);
+        transform: rotateX(180deg) rotateZ(90deg) translateZ(-1px);
+        -webkit-animation: zeroFour 4s -2s linear infinite;
+        animation: zeroFour 4s -2s linear infinite;
+      }
+
+      .world .box .wall:nth-child(4) {
+        -webkit-transform: rotateX(-90deg) translateZ(100px);
+        transform: rotateX(-90deg) translateZ(100px);
+      }
+
+      .world .box .wall:nth-child(4)::before {
+        -webkit-transform: rotateX(180deg) rotateZ(-90deg) translateZ(-1px);
+        transform: rotateX(180deg) rotateZ(-90deg) translateZ(-1px);
+        -webkit-animation: zeroFour 4s -2s linear infinite;
+        animation: zeroFour 4s -2s linear infinite;
+      }
+
+      .world .box .wall:nth-child(5) {
+        -webkit-transform: rotateY(90deg) translateZ(100px);
+        transform: rotateY(90deg) translateZ(100px);
+      }
+
+      .world .box .wall:nth-child(5)::before {
+        -webkit-transform: rotateX(180deg) translateZ(-1px);
+        transform: rotateX(180deg) translateZ(-1px);
+        -webkit-animation: zeroFour 4s linear infinite;
+        animation: zeroFour 4s linear infinite;
+      }
+
+      .world .box .wall:nth-child(6) {
+        -webkit-transform: rotateY(-90deg) translateZ(100px);
+        transform: rotateY(-90deg) translateZ(100px);
+      }
+
+      .world .box .wall:nth-child(6)::before {
+        -webkit-transform: rotateX(180deg) rotateZ(180deg) translateZ(-1px);
+        transform: rotateX(180deg) rotateZ(180deg) translateZ(-1px);
+        -webkit-animation: zeroFour 4s linear infinite;
+        animation: zeroFour 4s linear infinite;
+      }
+
+      @-webkit-keyframes zeroFour {
+        0% {
+          content: "4";
+        }
+
+        100% {
+          content: "0";
+        }
+      }
+
+      @keyframes zeroFour {
+        0% {
+          content: "4";
+        }
+
+        100% {
+          content: "0";
+        }
+      }
+
+      @-webkit-keyframes roll {
+        0% {
+          -webkit-transform: rotateZ(0);
+          transform: rotateZ(0);
+        }
+
+        85% {
+          -webkit-transform: rotateZ(90deg);
+          transform: rotateZ(90deg);
+        }
+
+        87% {
+          -webkit-transform: rotateZ(88deg);
+          transform: rotateZ(88deg);
+        }
+
+        90% {
+          -webkit-transform: rotateZ(90deg);
+          transform: rotateZ(90deg);
+        }
+
+        100% {
+          -webkit-transform: rotateZ(90deg);
+          transform: rotateZ(90deg);
+        }
+      }
+
+      @keyframes roll {
+        0% {
+          -webkit-transform: rotateZ(0);
+          transform: rotateZ(0);
+        }
+
+        85% {
+          -webkit-transform: rotateZ(90deg);
+          transform: rotateZ(90deg);
+        }
+
+        87% {
+          -webkit-transform: rotateZ(88deg);
+          transform: rotateZ(88deg);
+        }
+
+        90% {
+          -webkit-transform: rotateZ(90deg);
+          transform: rotateZ(90deg);
+        }
+
+        100% {
+          -webkit-transform: rotateZ(90deg);
+          transform: rotateZ(90deg);
+        }
+      }
+
+      @-webkit-keyframes slide {
+        0% {
+          -webkit-transform: translateX(0);
+          transform: translateX(0);
+        }
+
+        100% {
+          -webkit-transform: translateX(-200px);
+          transform: translateX(-200px);
+        }
+      }
+
+      @keyframes slide {
+        0% {
+          -webkit-transform: translateX(0);
+          transform: translateX(0);
+        }
+
+        100% {
+          -webkit-transform: translateX(-200px);
+          transform: translateX(-200px);
+        }
+      }
+    </style>
+<!-- 主体内容 -->
+<div class="container">
+<!--    <h1 class="label label-warning">404 找不到对应的资源</h1>-->
+    <div class="col-lg-12 main">
+            <div class="rail">
+      <div class="stamp four">4</div>
+      <div class="stamp zero">0</div>
+      <div class="stamp four">4</div>
+      <div class="stamp zero">0</div>
+      <div class="stamp four">4</div>
+      <div class="stamp zero">0</div>
+      <div class="stamp four">4</div>
+      <div class="stamp zero">0</div>
+      <div class="stamp four">4</div>
+      <div class="stamp zero">0</div>
+      <div class="stamp four">4</div>
+      <div class="stamp zero">0</div>
+      <div class="stamp four">4</div>
+      <div class="stamp zero">0</div>
+      <div class="stamp four">4</div>
+      <div class="stamp zero">0</div>
+      <div class="stamp four">4</div>
+      <div class="stamp zero">0</div>
+      <div class="stamp four">4</div>
+      <div class="stamp zero">0</div>
+    </div>
+    <div class="world">
+      <div class="forward">
+        <div class="box">
+          <div class="wall"></div>
+          <div class="wall"></div>
+          <div class="wall"></div>
+          <div class="wall"></div>
+          <div class="wall"></div>
+          <div class="wall"></div>
+        </div>
+      </div>
+    </div>
+    </div>
+</div>
+{% endblock %}

+ 70 - 2
readme.md

@@ -114,8 +114,76 @@
      >     path('leader/', views.leader, name='leader'),     # 领导分工
      > ]
      > ```
-     >
-     > 
+
+   9. 数据模型配置
+
+      - 创建一个common模块,在models.py中定义数据模型
+
+      > 定义一个文章模型和轮播图模型
+
+      ```python
+      class Article(models.Model):
+          CATEGORY_CHOICES = [
+              ('professional', '专业介绍'),
+              ('leader', '领导分工'),
+              ('academic_leader', '学院学科建设带头人教师'),
+              ('computer_science', '计算机系教师'),
+              ('software_engineering', '软件工程系教师'),
+              ('digital_media', '数字媒体技术系教师'),
+              ('iot_networking', '物联网与网络工程系教师'),
+              ('math_teaching', '数学教研室教师'),
+              ('party_work', '党政学工队伍教师'),
+              ('scientific', '教学科研'),
+              ('party_dynamic', '党建动态'),
+              ('youth_dynamic', '团学动态'),
+              ('admissions', '招生'),
+              ('employment', '就业'),
+          ]
+          title = models.CharField(max_length=200, verbose_name='标题')
+          markdown_content = models.TextField(verbose_name='markdown内容')
+      	#blank=True配置    
+          html_content = models.TextField(verbose_name='html内容',blank=True)
+          created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
+          updated_at = models.DateTimeField(auto_now=True, verbose_name='更新时间')
+          category = models.CharField(max_length=50, choices=CATEGORY_CHOICES, verbose_name='文章分类')
+          cover = models.URLField(verbose_name='封面')
+      
+          class Meta:
+              ordering = ['-created_at']
+      
+          def __str__(self):
+              return self.title
+      
+      
+      class Banner(models.Model):
+          title = models.CharField(max_length=200, verbose_name='标题')
+          url = models.URLField(verbose_name='链接')
+          order = models.IntegerField(default=0, verbose_name='序号')
+      
+          class Meta:
+              ordering = ['order']
+      
+          def __str__(self):
+              return self.title
+      ```
+
+      - 在admin中注册定义的模型,编译admin.py文件
+
+      ```python
+      from django.contrib import admin
+      
+      from common.models import Article, Banner
+      
+      # Register your models here.
+      admin.site.register(Article)
+      admin.site.register(Banner)
+      ```
+
+      > 更新模型信息:`python manage.py makemigrations common`
+      >
+      > 同步模型与数据表`python manage.py migrate common`
+      >
+      > 创建超级管理员用于登陆django的后台:`python manage.py createsuperuser `
 
 ### 工作内容分工
 

+ 14 - 0
图片素材.md

@@ -18,6 +18,20 @@
 
 ![](https://www-new.gwng.edu.cn/_upload/article/images/c1/0b/2571b0804ff181cccb13476961f1/9c0c9925-9cdb-4056-bc64-95c302423374.jpg)
 
+- 轮播图
+
+![](https://www-new.gwng.edu.cn/_upload/article/images/ea/52/92efb43545b08f9fc6cff3d4da12/3d9e5fde-b426-47b5-b227-01ce75bed969.png)
+
+![](https://www-new.gwng.edu.cn/_upload/article/images/70/97/4eb2553a42d0857d7e84f4da2a50/277ed5c3-1c74-4a28-a138-99a805356fe1.jpg)
+
+![](https://www-new.gwng.edu.cn/_upload/article/images/d6/76/98d987954758820d35e9a20bac79/4fd9a0ae-f81f-4742-8553-e3fdce8637e9.jpg)
+
+​	![](https://www-new.gwng.edu.cn/_upload/article/images/66/61/c7cc61aa4179b048fe052b60b76e/de2e5bf2-5505-40e6-b803-0011c0e3cf0e.jpg)
+
+![](https://www-new.gwng.edu.cn/_upload/article/images/a3/8a/b200086b44dda30874ccc756b20f/f914a290-9d8e-45e0-9eee-7253328983f3.jpg)
+
+![](https://www-new.gwng.edu.cn/_upload/article/images/22/0f/d84c18af44ffb9d1cd99782018f2/e8a24e5a-66ae-4054-89e4-f77fa714790f.jpg)
+
 ## 学院信息
 ### 领导分工
 - 院长

Файловите разлики са ограничени, защото са твърде много
+ 10 - 10
文章/学院简介/专业介绍/数字媒体技术.md


Файловите разлики са ограничени, защото са твърде много
+ 11 - 11
文章/学院简介/专业介绍/智能科学与技术.md


Файловите разлики са ограничени, защото са твърде много
+ 10 - 10
文章/学院简介/专业介绍/物联网工程.md


+ 20 - 20
文章/学院简介/专业介绍/网络工程.md

@@ -1,12 +1,12 @@
   
 
-网络工程专业电子白皮书
+# 网络工程专业电子白皮书
 
 (云计算工程师班)
 
-1、 专业基本信息
+## 1、 专业基本信息
 
-1.1专业定位
+### 1.1专业定位
 
 网络工程专业是我校重点建设的工科专业之一,对优化学校学科专业结构具有重要作用。该专业顺应新一代信息技术产业发展趋势,面向广东和粤港澳大湾区,培养具有扎实的网络工程学科基础理论和系统的网络工程组网、规划、设计和测试专业知识,具备较强的英语应用能力,能够综合运用所学专业知识从事网络工程领域的网络设计、开发、测试和运维管理的创新型、应用型高级专门人才。在各类IT企业、科研院所等企事业单位从事计算机网络系统的产品分析、设计、研究、开发、市场拓展、技术推广、网络安全维护等工作。
 
@@ -14,21 +14,21 @@
 
 建设目标**:** 努力建设成为省一流专业。
 
-1.2 培养目标
+### 1.2 培养目标
 
 本专业培养具有良好的信息科学素养,系统掌握网络工程专业的基本理论、基础知识和基本技能,具备网络工程及技术领域的研究、设计、开发、维护、管理和网络编程等基本能力,具备较强的英语应用能力、创新精神、综合实践能力和团队合作精神,能熟练运用所学知识和掌握的技能分析解决计算机网络技术和网络工程方面的实际应用问题的德、智、体、美、劳全面发展的高素质应用型、复合型、创新型人才。
 
-1.3 培养规格
+### 1.3 培养规格
 
 本专业学制为4年, 修业年限为3-6年,本专业总学分为167 学分。
 
-1.3.1知识要求
+#### 1.3.1知识要求
 
 (1)掌握从事专业工作所需的数学、自然科学知识,以及掌握从事网络工程专业所需的法律、法规、标准及工程管理、经济决策知识。
 
 (2)系统掌握专业基础理论知识和专业知识,经历系统的专业实践培养,理解计算学科的基本概念、知识结构、典型方法,建立数字化、算法、模块化与层次化等核心专业意识。
 
-1.3.2 能力要求
+#### 1.3.2 能力要求
 
 1\. 专业能力
 
@@ -44,7 +44,7 @@
 
 (3)具有较强跨文化交际能力和人际沟通、团队协作和社会活动能力,有一定的创新创业精神、实践能力和实际工作能力。
 
-1.3.3 素质要求
+#### 1.3.3 素质要求
 
   (1)人文和科学素质。掌握新时代中国特色社会主义思想和一定的人文社会及自然科学知识,具有良好的人文素养、职业道德和心理素质,社会责任感强,自觉践行社会主义核心价值观。
 
@@ -52,9 +52,9 @@
 
   (3)身心素质。具有健康的体魄和心理素质,正确认识自然规律和社会发展规律,正确处理人与自然和谐发展关系以及社会人际的关系。
 
-1.4 课程体系
+### 1.4 课程体系
 
-1.4.1 专业课程体系
+#### 1.4.1 专业课程体系
 
    根据新工科网络工程专业的知识、能力和素质要求构建了“专业+外语+技术”的复合型课程体系。
 
@@ -76,11 +76,11 @@
 
 ⑤ “√”表示该项实践教学和通识教育选修课所在学期。
 
-1.4.2 核心课程
+#### 1.4.2 核心课程
 
 程序设计基础、离散数学、数据结构与算法、数据库原理及应用、计算机网络、操作系统、华为核心数据通信技术、网络安全、路由与交换技术、移动通讯与无线网络。
 
-1.4.3 实践教学环节
+#### 1.4.3 实践教学环节
 
 (1)“军事技能”2学分:由学校统一安排,在新生入学后的第一个学期期末举行,时间一般为2周。
 
@@ -94,7 +94,7 @@
 
 (6)“专业实践”2学分:由学院在第二至第七学期的第19-20周组织实施“实践教学周”活动,第二到第五学期每学期0.3学分,第六到第七学期每学期0.4学分。
 
-1.5 师资队伍
+### 1.5 师资队伍
 
 网络工程专业拥有一支专业理论功底扎实、学历职称层次较高、具有丰富专业实践经历的“双能型”师资队伍。通过不断加大师资培养和引进力度, 并与企业共建校企师资培养机制,实现校企师资互聘。现有教师16人(含兼职2人),其中教授4人,副教授和高级工程师9人,博士4人,高级职称教师数量占教师总数的81%。近4年来,网络工程专业教师承担省级质量工程项目5项,省部级协同育人项目7项,出版教材4部;承担省部级、厅级科研项目12项;获软件著作权57项;发表论文70篇,其中SCI检索31篇,EI检索19篇,北大核心期刊3 篇。
 
@@ -106,25 +106,25 @@
 
 图2 专业教师自编并公开出版的教材
 
-1.6 教学条件
+### 1.6 教学条件
 
-1.6.1 实习基地
+#### 1.6.1 实习基地
 
 构建“课程实验、综合实践、校企实训、专业实习”四位一体的、校内外互融互通的实践教学体系,本专业与广州腾科网络技术有限公司、广州东软睿道教育信息技术有限公司、广州粤嵌通信科技股份有限公司、广州中软国际信息技术有限公司、广州靖凯科技有限公司、广州星科软件科技有限公司等企业签订了校企合作协议,建立了实践教学基地,教育教学改革不断深化。
 
-1.6.2 专业图书资料
+#### 1.6.2 专业图书资料
 
 本专业近4年图书文献资料购置经费93.13万元,图书馆藏书中,有关网络工程专业的图书1.98万册,中文期刊17种,外文电子图书1.84万册,专业图书资料丰富,能满足本专业所需图书用量。
 
-1.6.3 专业实验室
+#### 1.6.3 专业实验室
 
    网络工程专业实验室共有6个,其中基础实验室有4个,专业实验室有2个,基础实验室与计算机科学技术、软件工程等相关专业共建共享,专业实验室设有网络工程实验室、校企共建实验室华为数字通信实验室,这些专业实验室配备较为齐全,设备较为先进,利用率较高,仪器设备更新率约70%左右,仪器设备(固定资产)完好率98%以上,实验仪器设施符合有关规定,满足实验教学和科研需要。![4b04b315-799c-42f5-a2f2-024e866ca4e6.jpg (265×180)](https://www-new.gwng.edu.cn/_upload/article/images/86/23/74a8b2da4773891a080aeb862221/4b04b315-799c-42f5-a2f2-024e866ca4e6.jpg)![dd4a878a-6322-4249-89d7-c9872b620d7a.jpg (269×182)](https://www-new.gwng.edu.cn/_upload/article/images/86/23/74a8b2da4773891a080aeb862221/dd4a878a-6322-4249-89d7-c9872b620d7a.jpg)
 
       图3 校企共建华为数字通信实验室
 
-2\. 其他专业相关的重要信息
+## 2\. 其他专业相关的重要信息
 
-2.1 专业特色优势
+### 2.1 专业特色优势
 
 网络工程专业经过4年的发展,已形成三大特色优势。
 
@@ -138,7 +138,7 @@
 
 图4综合布线实践           图5电子电路实践周
 
-2.2 人才培养特色
+### 2.2 人才培养特色
 
 (1)强化实践能力的培养。坚持四年实践能力培养不断线,从课程的验证性实验、综合实验、实践周综合设计类项目的完成、专业实习的训练到毕业设计等,通过以上形式全面对学生实践能力进行分层次、渐进式培养。此外,充分利用各级各类的创新基金项目、网络安全攻防大赛项目、计算机设计类大赛、华为ICT大赛作为抓手,引导学生尽早进入学院的创新实验室,参与各级各类项目和大赛,以赛代练,提升学生的能力。
 

Файловите разлики са ограничени, защото са твърде много
+ 10 - 10
文章/学院简介/专业介绍/计算机科学与技术.md


Файловите разлики са ограничени, защото са твърде много
+ 10 - 10
文章/学院简介/专业介绍/软件工程.md


+ 3 - 3
文章/学院简介/领导分工/党总支书记 徐燕萍.md

@@ -4,7 +4,7 @@
 
   主讲《大学生心理健康》《经典心理作品赏析》《幸福心理学》等多门课程,主持7项校级、市厅级教科研课题并顺利结项,主编《从“心”发展,扬帆起航——大学生心理健康教育》等2本大学生心理健康教材,发表10余篇学生心理工作相关论文,指导学生获得省级以上奖项40余项。
 
-**一、主要荣誉和获奖**
+## **一、主要荣誉和获奖**
 
 1、荣获广东外语外贸大学“优秀党务工作者”,广东外语外贸大学南国商学院“优秀教工党员”、“优秀共产党员”;
 
@@ -22,7 +22,7 @@
 
 8、荣获广东省教育厅2022年“5.25”大学生心理健康月心理拓展训练微视频二等奖、广东省教育厅“立志·修身·博学·报国”主题教育系列活动微课二等奖、第七届广东高校网络媒体展示节“粤易乐学”新媒体微课作品二等奖、广东高校思想政治工作教学视频三等奖、第三届全国高校心理健康课程微视频大赛二等奖。
 
-**二、指导学生获奖**
+## **二、指导学生获奖**
 
 1、指导学生项目获第十七届“挑战杯”广东大学生课外学术科技作品竞赛三等奖;
 
@@ -44,7 +44,7 @@
 
 《独立学院大学生心理求助现状探析及对策分析——以广东外语外贸大学南国商学院为例》
 
-**三、主持教科研课题**
+## **三、主持教科研课题**
 
 1、2024年度教育科学规划课题(高等教育专项)项目《健康中国视域下大学生积极心理品质研究——以广东省民办高校为例》
 

+ 3 - 1
文章/学院简介/领导分工/杨德牛 副教授.md

@@ -1,4 +1,6 @@
-![8cdb7f08-f1cc-46ee-a7e2-0080db21cac2.jpg (798×600)](https://www-new.gwng.edu.cn/_upload/article/images/eb/c6/9cd15bf44bbaac9591f7a8441acb/8cdb7f08-f1cc-46ee-a7e2-0080db21cac2.jpg)  杨德牛,男,九三学社社员。理学博士研究生,副教授,硕士生导师。2023年12月博士毕业于四川师范大学。计算机学院副院长,分管学科建设、科研、高层次人才。
+![8cdb7f08-f1cc-46ee-a7e2-0080db21cac2.jpg (798×600)](https://www-new.gwng.edu.cn/_upload/article/images/eb/c6/9cd15bf44bbaac9591f7a8441acb/8cdb7f08-f1cc-46ee-a7e2-0080db21cac2.jpg)  
+
+杨德牛,男,九三学社社员。理学博士研究生,副教授,硕士生导师。2023年12月博士毕业于四川师范大学。计算机学院副院长,分管学科建设、科研、高层次人才。
 
 曾多次担任全国大学生数学建模竞赛江西赛区评委。多次获得全国大学生数学建模竞赛和全国大学生数学竞赛优秀指导教师;指导学生多次在全国大学生数学建模竞赛中获得国家奖;指导学生进入全国大学生数学竞赛总决赛,获国家二等奖。
 

+ 5 - 5
文章/学院简介/领导分工/胡 毅 副教授.md

@@ -4,7 +4,7 @@
 
    自2002年从教以来,先后主讲《大学计算机基础》、《程序设计基础》、《数据库原理及应用》、《数据结构与算法》、《高级数据库技术》、《计算机网络》、《编译原理》、《软件工程》等多门课程。多次被评为学校优秀教师和先进工作者,指导学生参加国家级、省级竞赛多项,获得国赛二等奖1项、三等奖1项,省赛一等奖2项,二等奖4项,三等12项。主持开展教育部产学合作协同育人项目3项,省级质量工程项目2项,省级科研项目2项,校级一流课程建设项目1项,发表学术论文10余篇,其中SCI 5篇,EI核心期刊3篇,北大核心2篇,获得软件著作权20余项,实用新型专利6项,编写教材2部。
 
-**一.获奖情况**
+## **一.获奖情况**
 
 1、2014年荣获学校2013-2014学年度“优秀教师”荣誉称号。
 
@@ -30,7 +30,7 @@
 
 12、2021年荣获学校2020-2021学年度“实施课程过程性评价”教学改革优秀教师荣誉称号。
 
-**二.指导竞赛**
+## **二.指导竞赛**
 
 1、2014年指导学生参加第五届蓝桥杯全国软件和信息技术专业人才大赛,荣获省赛二等奖1项、三等奖2项、优秀奖1项,获评优秀指导教师荣誉称号。
 
@@ -46,7 +46,7 @@
 
 7、2023年指导学生参加第十四届蓝桥杯全国软件和信息技术专业人才大赛,荣获省赛二等奖1项,获评优秀指导教师荣誉称号。
 
-**三.教研项目**
+## **三.教研项目**
 
 1、主持2015年度广东省质量工程项目:广东外语外贸大学南国商学院——广州鑫宝软件科技有限公司大学生校外实践教学基地(粤教高函\[2015\]133号)。
 
@@ -64,13 +64,13 @@
 
 8、主研广东外语外贸大学南商学院——数据中国“百校工程”建设院校项目(教规建中心\[2019\]47号),2019年9月30日,排名第二。
 
-**四.科研项目**
+## **四.科研项目**
 
 1、主持广东省普通高校特色创新类项目:基于PSO的云计算环境中大数据聚类算法研究(自然科学类,2019KTSCX234,2019)。
 
 2、主持广东省社科联孵化型社科普及基地项目:青少年信息素养科普教育基地(粤社科联通\[2022\] 51号)
 
-**五.主要学术论文**
+## **五.主要学术论文**
 
 \[1\]Yi Hu, MUHAMMAD AVAISUMAR, MUSTAFA HABIB, CE SHI, GHULAM RASOOL, ZIJIANG ZHU, Antimagicness of mCn-Path and Its Disjoint Union, IEEE Access, 2019, DOI:10.1109/Access.2019.2949043. (SCI检索, JCR-Q1, WOS: 000510432700003)
 

+ 4 - 4
文章/学院简介/领导分工/院长朱子江.md

@@ -4,7 +4,7 @@
 
 朱子江,硕士,教授,系统分析师(高级),硕士研究生导师。计算机学院院长,计算机科学与技术专业负责人,广东外语外贸大学南国商学院学术委员会委员、教学指导委员会委员、学位委员会工学分委会主席,广东省高等学校“千百十工程”校级培养对象;兼任中国计算机学会高级会员,广东高等教育学会数字化科学技术分会副理事长,粤港澳大湾区网络空间安全行业产教融合共同体副理事长,广东省网络空间安全产学研联盟常务理事,广东省计算机学会民办教育工作委员会副主任委员,广州市未来信息技术研究院副院长等社会学术团体职务。
 
-**一、奖励与荣誉**
+## **一、奖励与荣誉**
 
 1.2018年9月获广东省“南粤优秀教师”荣誉称号。
 
@@ -18,7 +18,7 @@
 
 6.以第一完成人获校级教育教学成果奖特等奖1项、二等奖2项、三等奖1项。
 
-**二、主要教研项目**
+## **二、主要教研项目**
 
 1.主持国家级项目:广东外语外贸大学南商学院——数据中国“百校工程”建设院校项目(教规建中心\[2019\]47号,2019年9月30日),已结项。
 
@@ -34,7 +34,7 @@
 
 7.主持2010年度广东省高等教育教学改革项目《构建独立学院计算机公共课“1+X”课程体系》(项目编号:BKYB2011101),已结项。
 
-  **三、主要科研项目**
+##   **三、主要科研项目**
 
 1\. 主持2024年度校级硕士专业学位培育点:电子信息(南国学科\[2024\]1号,NO. 2024ZS003,2024年6月27日),在研。
 
@@ -44,7 +44,7 @@
 
 4.主持2016年广东普通高校特色创新项目(自然科学):基于深度学习的人脸情感分析研究(自然科学类,2016KTSCX182),已结项。
 
- **四、主要学术论文**
+##  **四、主要学术论文**
 
 \[1\] **Zijiang Zhu\***, Junhua Wang\*, Tianniu Deng and Huajie Dai. An artificial intelligence-based strategy for multi-objective optimization of internal combustion engine performance and emissions. Expert Systems with Applications, 270(2025): 126472. DOI: 10.1016/j.eswa.2025.126472 (SCI中科院一区, WOS: 001402272100001). 2025-4.
 

Някои файлове не бяха показани, защото твърде много файлове са промени