Python Web开发:招聘信息发布

来自CloudWiki
跳转至: 导航搜索

背景

“加入云协“页面:

  • 招聘方:允许招聘者通过后台管理系统发布招聘信息
  • 应聘方:允许应聘人员通过表单将个人应聘信息上传到后台
  • 应聘人员通过初面后 将收到系统发送的邮件通知。

实训步骤

创建模型

创建招聘广告模型Ad:

contactApp/models.py:

from django.db import models
from django.utils import timezone

# Create your models here.
class Ad(models.Model):
    title = models.CharField(max_length=50, verbose_name='纳新部门')
    description = models.TextField(verbose_name='纳新要求')
    publishDate = models.DateTimeField(max_length=20,
                                       default=timezone.now,
                                       verbose_name='发布时间')

    def __str__(self):
        return self.title

    class Meta:
        verbose_name = '纳新启事'
        verbose_name_plural = '纳新启事'
        ordering = ('-publishDate', )

添加完模型后进行数据迁移:

python manage.py makemigrations

Migrations for 'contactApp':
  contactApp\migrations\0001_initial.py
    - Create model Ad

python manage.py migrate

Operations to perform:
  Apply all migrations: aboutApp, admin, auth, contactApp, contenttypes, newsApp, productsApp, sessions
Running migrations:
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying contactApp.0001_initial... OK

注册模型

编辑contactApp/admin.py文件,将模型注册到后台管理系统admin中

from django.contrib import admin
from .models import Ad

admin.site.register(Ad)

后台验证

Python21052403.png

修改视图函数

在每次请求“加入云协”时 后台系统从数据库取出所有纳新信息,传入到模板文件recruit.html中

def recruit(request):
    AdList = Ad.objects.all().order_by('-publishDate')
    return render(request, 'recruit.html', {
               'active_menu':'contactus',
               'sub_menu': 'recruit',
               'AdList':AdList
            })

前端页面显示

采用Bootstrap提供的“手风琴”面板来展现纳新列表信息,

该组件的样式类为class="panel-group"

该组件可以看作面板的一个容器,可以放置多个面板,并且每个面板均可折叠。

{% extends "base.html" %}
{% load staticfiles %}


{% block title %}
人才招聘
{% endblock %}

{% block content %}
<link href="{% static 'css/contact.css' %}" rel="stylesheet">
<script src="{% static 'js/layDate-v5.0.9/laydate.js' %}"></script>
</script>
<!-- 广告横幅 -->
<div class="container-fluid">
    <div class="row">
        <img class="img-responsive model-img" src="{% static 'img/contact.jpg' %}">
    </div>
</div>
<!-- 主体内容 -->
<div class="container">
    <div class="row row-3">
        <!-- 侧边导航栏 -->
        <div class="col-md-3">
            <div class="model-title">
                人才招聘
            </div>
            <div class="model-list">
                <ul class="list-group">
                    <li class="list-group-item" id="contact">
                        <a href="{% url 'contactApp:contact' %}">欢迎咨询</a>
                    </li>
                    <li class="list-group-item" id="recruit">
                        <a href="{% url 'contactApp:recruit' %}">加入云协</a>
                    </li>
                </ul>
            </div>
        </div>
        <!-- 说明文字和图片 -->
        <div class="col-md-9">
            <div class="model-details-title">
                加入云协
            </div>
            <div class="model-details">
                <div class="panel-group" id="accordion">
                    {% for ad in AdList %}
                    <div class="panel panel-default">
                        <div class="panel-heading" role="tab" id="panel{{ad.id}}">
                            <h4 class="panel-title">
                                {% if forloop.first %}
                                <a role="button" data-toggle="collapse" data-parent="#accordion"
                                    href="#collapse{{ad.id}}">
                                    {% else %}
                                    <a class="collapsed" data-toggle="collapse" data-parent="#accordion"
                                        href="#collapse{{ad.id}}">
                                        {% endif %}
                                        {{ad.title}}
                                    </a>
                            </h4>
                        </div>
                        {% if forloop.first %}
                        <div id="collapse{{ad.id}}" class="panel-collapse collapse in">
                        {% else %}
                            <div id="collapse{{ad.id}}" class="panel-collapse collapse">
                                {% endif %}
                                <div class="panel-body">
                                    <p>{{ad.description}}</p>
                                </div>
                            </div>
                        </div>
                        {% endfor %}
                    </div>
                </div>


            </div>
        </div>
    </div>


</div>
{% endblock %}

效果图

Python21052601.png

.