嘿,大家好!今天咱们来聊一个挺有意思的项目——用Python和Django做一个“校友管理平台”。这个平台主要是给职校(职业学校)用的,用来管理毕业生的信息、联系方式、工作情况等等。听起来是不是挺有技术含量的?别担心,我来一步步带你们走一遍。
首先,咱们得明确一下需求。职校的校友管理系统需要具备哪些功能呢?比如说,添加校友信息、查看校友列表、搜索校友、更新信息、删除信息,还有可能需要导出数据之类的。对吧?这些都是基础功能,但也是关键点。
接下来,咱们得选个合适的框架。这里我推荐用Django,因为它是一个非常成熟的Python框架,而且自带了很多功能,比如数据库操作、用户认证、表单处理等,特别适合快速开发。如果你是刚开始学Python或者对Web开发不太熟悉,Django真的能帮你省不少事。
好了,现在咱们开始搭环境。首先,你得安装Python。如果你已经装好了,那太好了。接下来就是安装Django。你可以用pip来安装:
pip install django
安装完之后,你可以用以下命令创建一个新的Django项目:
django-admin startproject alumni_project
然后进入项目目录:
cd alumni_project
接下来,创建一个应用,比如叫“alumni”:
python manage.py startapp alumni
然后在`settings.py`里把新创建的app加进去:
INSTALLED_APPS = [ ... 'alumni', ]
好了,接下来咱们要定义模型。模型就是数据库里的表结构。比如,校友信息可能包括姓名、性别、毕业年份、专业、联系方式、工作单位、职位等等。我们可以这样写:
# alumni/models.py
from django.db import models
class Alumni(models.Model):
name = models.CharField(max_length=100)
gender = models.CharField(max_length=10, choices=[('男', '男'), ('女', '女')])
graduation_year = models.IntegerField()
major = models.CharField(max_length=100)
contact_info = models.TextField()
job_title = models.CharField(max_length=100)
company = models.CharField(max_length=100)
def __str__(self):
return self.name
然后执行数据库迁移:
python manage.py makemigrations python manage.py migrate
这样,我们的数据库就建好了。接下来,咱们要创建一个简单的页面来展示这些数据。Django的视图和模板机制可以帮我们实现这一点。
在`views.py`里,我们可以写一个视图函数来获取所有校友的数据,并传递给模板:
# alumni/views.py
from django.shortcuts import render
from .models import Alumni
def alumni_list(request):
alumni_list = Alumni.objects.all()
return render(request, 'alumni/alumni_list.html', {'alumni_list': alumni_list})
然后,在`templates/alumni/`目录下创建一个`alumni_list.html`文件,内容如下:
校友列表 校友列表 {% for alumni in alumni_list %} {{ alumni.name }} - {{ alumni.major }} {% endfor %}
接下来,我们需要配置URL路由。在`urls.py`里添加一条路径:
# alumni_project/urls.py
from django.contrib import admin
from django.urls import path
from alumni import views
urlpatterns = [
path('admin/', admin.site.urls),
path('alumni/', views.alumni_list),
]

现在,运行服务器看看效果:
python manage.py runserver
打开浏览器,访问http://127.0.0.1:8000/alumni/,你应该能看到一个简单的校友列表页面。
但是这还不够,咱们还需要一个后台管理界面,方便管理员添加、编辑和删除校友信息。Django自带了一个强大的Admin后台,我们可以直接使用它。
首先,去`admin.py`里注册模型:
# alumni/admin.py from django.contrib import admin from .models import Alumni admin.site.register(Alumni)
然后创建一个管理员账号:
python manage.py createsuperuser
输入用户名、邮箱和密码,然后登录到http://127.0.0.1:8000/admin/,就可以看到校友管理界面了。
不过,光有这些功能还不够。我们还可以考虑加入一些高级功能,比如搜索、分页、过滤、导出Excel等。比如,增加一个搜索功能,让用户可以根据姓名或专业查找校友。
修改一下视图函数:
# alumni/views.py
from django.shortcuts import render
from .models import Alumni
def alumni_list(request):
query = request.GET.get('q')
if query:
alumni_list = Alumni.objects.filter(name__icontains=query) | Alumni.objects.filter(major__icontains=query)
else:
alumni_list = Alumni.objects.all()
return render(request, 'alumni/alumni_list.html', {'alumni_list': alumni_list})
然后在模板中添加一个搜索框:
这样,用户就能根据关键词进行搜索了。
再来说说导出功能。有时候,学校可能需要将校友数据导出为Excel文件,方便后续处理。我们可以用`pandas`库来实现这个功能。
首先安装pandas:
pip install pandas
然后在视图中添加一个导出函数:
# alumni/views.py import pandas as pd from django.http import HttpResponse from .models import Alumni def export_alumni(request): alumni_data = Alumni.objects.all().values( 'name', 'gender', 'graduation_year', 'major', 'contact_info', 'job_title', 'company' ) df = pd.DataFrame(alumni_data) response = HttpResponse(content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') response['Content-Disposition'] = 'attachment; filename=alumni.xlsx' df.to_excel(response, index=False) return response
然后在URL中添加一个路径:
# alumni_project/urls.py
from django.contrib import admin
from django.urls import path
from alumni import views
urlpatterns = [
path('admin/', admin.site.urls),
path('alumni/', views.alumni_list),
path('export-alumni/', views.export_alumni),
]
然后在模板中添加一个导出按钮:
导出Excel
这样,用户就可以下载一个包含所有校友信息的Excel文件了。
除了这些基本功能,我们还可以考虑加入用户登录系统,让不同的角色有不同的权限。比如,普通用户只能查看信息,而管理员可以编辑和删除。这可以通过Django的内置用户认证系统来实现。
最后,整个项目的结构大致如下:
alumni_project/ ├── manage.py ├── alumni_project/ │ ├── settings.py │ ├── urls.py │ └── wsgi.py └── alumni/ ├── models.py ├── views.py ├── admin.py ├── urls.py └── templates/ └── alumni/ └── alumni_list.html
通过这样的结构,我们可以更好地组织代码,也方便后期维护和扩展。
总结一下,我们用Django搭建了一个简单但功能完整的校友管理平台,包含了数据存储、前端展示、搜索、导出等功能。对于职校来说,这样的系统可以帮助他们更好地管理和联系校友,提升学校的影响力和校友资源的利用率。
如果你对这个项目感兴趣,可以尝试自己动手做一做,或者在这个基础上继续扩展更多功能,比如短信通知、邮件提醒、移动端适配等等。总之,这是一个非常有实用价值的项目,非常适合学习和实践。
好了,今天的分享就到这里。希望这篇文章对你有所帮助,如果你有任何问题,欢迎随时留言交流!
