首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
03 | 初识Django:Django适合做什么?
04 | 用2个命令创建一个包含用户管理功能的后台
05 | 职位管理系统:开始Django之旅 :创建一个可以管理职位的后台
06 | 职位管理系统:产品体验优化:快速迭代完善应用
07 | 职位管理系统:添加自定义页面:让匿名用户可以浏览职位列表页
08 | 职位管理系统:添加自定义页面:让匿名用户可以查看职位详情
09 | 招聘评估系统:产品背景、迭代思维与MVP产品规划
10 | 招聘评估系统:唯快不破:在产品中使用产品迭代思维
11 | 招聘评估系统:数据建模 & 企业级数据库设计原则
12 | 招聘评估系统:创建应用和模型,分组展示页面内容
13 | 招聘评估系统:如何批量从Excel文件导入候选人数据
14 | 招聘评估系统:产品体验优化:候选人列表筛选和查询
15 | 招聘评估系统:省去单独的账号管理工作:企业域账号集成
16 | 招聘评估系统:批量设置面试官:面试官的导入、授权
17 | 招聘评估系统:产品新需求 :如何导出候选人的数据到CSV
18 | 招聘评估系统:如何记录日志方便排查问题
19 | 招聘评估系统:生产环境与开发环境配置分离
20 | 招聘评估系统:产品细节完善
21 | 简历投递和面试流程:定制更美观的主题
22 | 简历投递和面试流程:定制面试官权限
23 | 简历投递和面试流程:钉钉群消息集成&通知一面面试官
24 | 简历投递和面试流程:允许候选人注册登录: 集成Registration
25 | 简历投递和面试流程:候选人简历存储:创建简历Model
26 | 简历投递和面试流程:让候选人可以在线投递简历
27 | 简历投递和面试流程:使用Bootstrap来定制页面样式
28 | 简历投递和面试流程:简历评估&安排一面面试官
29 | 简历投递和面试流程:定制列表字段,查看简历详情
30 | 简历投递和面试流程:为已有系统数据库生成管理后台
31 | Django的中间件(Middleware)
32 | 创建请求日志、性能日志记录中间件
33 | 在Django中支持多语言
34 | 错误和异常日志上报:Sentry集成
35 | 错误和异常日志上报:捕获异常上报到Sentry并发送钉钉群通知
36 | Django安全防护:防止XSS跨站脚本攻击
37 | Django安全防护:CSRF跨站请求伪造和SQL注入攻击
38 | Django Rest Framework开放API
39 | 在Django中使用缓存&Redis的使用
40 | Django与Celery 集成:Celery的使用
41 | Django与Celery集成:异步任务
42 | Django与Celery集成:定时任务
43 | 文件和图片上传功能
44 | 实践中的问题:多数据库路由
45 | Django之美:大数据量的关联外键 (autocomplete_fields)
46 | Django之美:20行代码实现只读站点ReadOnlyAdmin
47| Django之美:10行代码自动注册所有Model到Admin管理后台
48 | Django之美:Signals信号及其使用场景
49 | Django之美:CSR架构总结之Celery
50 | Django之美:Sentry&Django Rest Framework
51 | Django之美:Django的常用插件
52 | 生产环境要注意哪些事项:生产环境的应用部署
53 | 应用水平扩展:使用负载均衡
54 | 让网站访问更快:使用CDN加速
55 | 让故障在第一时间被感知到:接入监控告警
56 | 生产环境中的安全:生产环境的安全设计
57 | 生产环境中的安全:应用安全
58 | 生产环境中的安全:架构安全
59 | 生产环境中的安全:数据安全
60 | 生产环境中的安全:密码安全与业务安全
61 | 云环境中的部署:Docker容器的基础用法
62 | 云环境中的部署:如何像分发集装箱一样发布应用
63 | 云环境中的部署:开发环境的容器化&构建小镜像
64 | 云环境中的部署:什么时候需要容器编排
65 | 云环境中的部署:阿里云上搭建Kubernetes集群
66 | 云环境中的部署:管理监控容器中的Django应用
67 | 云环境中的部署:应用日志收集与查询
68 | 云环境中的持续集成:CI/CD的工作流程
69 | 云环境中的持续集成:CI/CD的基本使用
当前位置:
首页>>
技术小册>>
Django快速开发实战
小册名称:Django快速开发实战
### 12 | 招聘评估系统:创建应用和模型,分组展示页面内容 在开发一个高效的招聘评估系统时,Django作为Python的高级Web框架,凭借其快速开发、安全及可扩展性,成为了众多开发者的首选。本章将引导您从零开始,利用Django创建一个招聘评估系统,重点聚焦于如何创建应用、设计数据库模型,并实现页面内容的分组展示,以提升用户体验和数据管理效率。 #### 12.1 引言 招聘评估系统是企业人力资源管理的重要组成部分,它涵盖了从职位发布、简历收集、候选人筛选到面试评估的全过程。在Django中,我们通过创建不同的应用(Apps)来组织相关功能,每个应用包含一系列的模型(Models)、视图(Views)、模板(Templates)和表单(Forms)。本章将通过构建一个招聘评估系统的核心部分——候选人评估与展示模块,来展示Django的强大功能。 #### 12.2 创建应用 首先,我们需要在Django项目中创建一个新的应用。假设您的项目名为`recruitment_system`,打开终端,切换到项目目录下,运行以下命令来创建名为`assessment`的应用: ```bash python manage.py startapp assessment ``` 这将在`recruitment_system`项目目录下生成一个名为`assessment`的文件夹,其中包含Django应用的基本结构。 #### 12.3 设计数据库模型 在招聘评估系统中,我们至少需要以下几个模型来存储数据: - **Candidate**(候选人):存储候选人的基本信息,如姓名、联系方式、教育背景等。 - **Position**(职位):定义公司正在招聘的职位,包括职位名称、职位描述、要求等。 - **Interview**(面试):记录候选人的面试信息,如面试时间、面试官、评价等。 在`assessment/models.py`文件中定义这些模型: ```python from django.db import models class Position(models.Model): name = models.CharField(max_length=100) description = models.TextField() requirements = models.TextField() def __str__(self): return self.name class Candidate(models.Model): name = models.CharField(max_length=100) email = models.EmailField(unique=True) phone = models.CharField(max_length=20, blank=True, null=True) positions_applied = models.ManyToManyField(Position, related_name='candidates') def __str__(self): return self.name class Interview(models.Model): candidate = models.ForeignKey(Candidate, on_delete=models.CASCADE) position = models.ForeignKey(Position, on_delete=models.CASCADE) date = models.DateField() evaluator = models.CharField(max_length=100) evaluation = models.TextField() def __str__(self): return f"{self.candidate.name} - {self.position.name} - {self.date}" ``` #### 12.4 迁移数据库 在定义了模型之后,需要运行迁移命令来在数据库中创建相应的表。在项目根目录下,执行以下命令: ```bash python manage.py makemigrations python manage.py migrate ``` 这将根据`models.py`中的定义,在数据库中创建或更新表结构。 #### 12.5 分组展示页面内容 在招聘评估系统中,分组展示候选人信息或面试记录对于招聘团队来说至关重要。Django的视图(Views)和模板(Templates)系统提供了强大的功能来实现这一点。 ##### 12.5.1 创建视图 在`assessment/views.py`中,我们可以创建视图函数来查询数据并传递给模板。例如,展示所有候选人及其申请的职位信息: ```python from django.shortcuts import render from .models import Candidate, Position def candidates_list(request): candidates = Candidate.objects.select_related('positions_applied').prefetch_related('positions_applied__candidates').all() positions = Position.objects.all() context = {'candidates': candidates, 'positions': positions} return render(request, 'assessment/candidates_list.html', context) ``` 这里使用了`select_related`和`prefetch_related`来优化查询性能,尤其是当`Candidate`和`Position`之间存在多对多关系时。 ##### 12.5.2 设计模板 在`assessment/templates/assessment/`目录下创建`candidates_list.html`模板文件,用于展示候选人信息。我们可以使用Django模板语言(DTL)来分组显示候选人及其申请的职位: ```html <!DOCTYPE html> <html> <head> <title>候选人列表</title> </head> <body> <h1>候选人列表</h1> {% for candidate in candidates %} <h2>{{ candidate.name }}</h2> <p>邮箱: {{ candidate.email }}</p> <p>电话: {{ candidate.phone }}</p> <h3>申请的职位</h3> <ul> {% for position in candidate.positions_applied.all %} <li>{{ position.name }}</li> {% endfor %} </ul> {% endfor %} </body> </html> ``` 此模板通过循环遍历候选人列表,并对每个候选人,再遍历其申请的职位列表,从而实现了分组展示的效果。 #### 12.6 路由配置 最后,我们需要在项目的URL配置文件中添加对`candidates_list`视图的路由映射。在`recruitment_system/urls.py`(或相应的应用级URL配置文件)中,添加如下路由: ```python from django.urls import path from assessment import views urlpatterns = [ # ... 其他路由 path('candidates/', views.candidates_list, name='candidates_list'), ] ``` 这样,当用户访问`/candidates/`时,就会看到所有候选人及其申请的职位信息的分组展示页面。 #### 12.7 总结 本章通过创建`assessment`应用、设计数据库模型、编写视图函数和模板,以及配置路由,展示了如何在Django中构建招聘评估系统的候选人评估与展示模块。通过分组展示候选人信息,我们提高了数据的可读性和用户体验。在实际项目中,您还可以根据具体需求,进一步扩展和优化这些功能,比如添加搜索功能、优化界面设计等。Django的强大和灵活性使得这些扩展变得简单而高效。
上一篇:
11 | 招聘评估系统:数据建模 & 企业级数据库设计原则
下一篇:
13 | 招聘评估系统:如何批量从Excel文件导入候选人数据
该分类下的相关小册推荐:
Django零基础入门
Django框架入门指南