极客时间 - Django快速开发实战

Django快速开发实战

  • 能够使用Django Admin快速搭建管理后台
  • 掌握Django管理后台的深度定制方法,能够添加定制的功能
  • Django中间件的工作原理,能够自己设计实现一个中间件
  • 能够使用Django快速为企业现有系统搭建管理后台
  • 精益创业的产品思维,结合Django1-2天快速迭代开发出有用的企业应用

初识Django:Django能做什么?

Django适用场景

  • 内容管理系统
    • 博客
    • CMS
    • Wiki
  • 企业内部系统
    • 会议室预定
    • 招聘管理
    • ERP & CRM
    • 报表系统
  • 运维管理系统
    • CMDB
    • 发布管理
    • 作业管理
    • 脚本管理
    • 变更管理
    • 故障管理

Django的优点和缺点

优点:

  • Python实现,代码干净、整洁
  • 提供管理后台,能够快速开发
  • 复用度高,设计、使用上遵循DRY原则
  • 易于扩展复用的中间件
  • 内置的安全框架
  • 丰富的第三方类库

缺点:

  • 单体应用-不易并行开发,单点扩展
  • 不适合非常小的几行代码的项目
  • 不适合于高并发的to C互联网项目

Django的设计思想

  • DRY(Don`t repeat yourself):不重复造轮子
  • MVT
  • 快速开发
  • 灵活易于扩展
  • 松耦合
  • 显式优于隐式

用两个命令创建一个包含用户管理功能的后台

使用Django创建一个基础应用

职位管理系统 - 建模
  • 职位名称
  • 类别
  • 工作地点
  • 职位职责
  • 职位要求
  • 发布人
  • 发布日期
  • 修改日期
安装django
powershell 复制代码
pip install django==5.0
查看django版本
powershell 复制代码
python -m django --version
创建项目
powershell 复制代码
django-admin startproject recruitment
启动服务
powershell 复制代码
python manage.py runserver 0.0.0.0:8000
创建应用
powershell 复制代码
 python .\manage.py startapp jobs

jobs表示关于职位管理的应用

生成迁移文件
powershell 复制代码
python .\manage.py makemigrations
迁移数据
powershell 复制代码
python .\manage.py migrate 
创建后台管理员账号
powershell 复制代码
 python .\manage.py createsuperuser
创建模型
python 复制代码
from datetime import datetime

from django.db import models
from django.contrib.auth.models import User

# Create your models here.
JobTypes = [
    (0, "技术类"),
    (1, "产品类"),
    (2, "运营类"),
    (3, "设计类"),
]

Cities = [
    (0, "北京"),
    (0, "上海"),
    (0, "深圳"),
    (0, "西安"),
]


class Job(models.Model):
    job_type = models.SmallIntegerField(blank=False, choices=JobTypes, verbose_name="职位类别")
    job_name = models.CharField(max_length=250, blank=False, verbose_name="职位名称")
    job_city = models.SmallIntegerField(choices=Cities, blank=False, verbose_name="工作地点")
    job_responsibility = models.TextField(max_length=1024, verbose_name="职位职责")
    job_requirements = models.TextField(max_length=1024, blank=False, verbose_name="职位要求")
    creator = models.ForeignKey(User, verbose_name="创建人", null=True, on_delete=models.SET_NULL)
    created_date = models.DateTimeField(verbose_name="创建时间", default=datetime.now)
    modified_date = models.DateTimeField(verbose_name="修改时间", default=datetime.now)
注册模型
python 复制代码
from django.contrib import admin

from jobs.models import Job

# Register your models here.
admin.site.register(Job)
注册应用

在settings.py INSTALLED_APPS下注册应用

python 复制代码
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'jobs'
]

快速迭代完善应用

设置Django Admin模型显示的字段
python 复制代码
class JobAdmin(admin.ModelAdmin):
    list_display = ("job_name", "job_type", "job_city", "creator", "created_date", "modified_date")

admin.site.register(JobAdmin)
设置Django Admin新增/修改时不需要手动编辑的字段
python 复制代码
class JobAdmin(admin.ModelAdmin):
    exclude = ("creator", "created_date", "modified_date")
admin.site.register(JobAdmin)
设置Django Admin创建/修改人为当前登录用户
python 复制代码
class JobAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        obj.creator = request.user
        super().save_model(request, obj, form, change)
admin.site.register(Job, JobAdmin)

添加自定义页面

职位列表展示
  • 列表页时独立页面,使用自定义的页面
  • 添加如下页面
    • 职位列表页
    • 职位详情页
  • 匿名用户可以访问
Django的自定义模板
  • Django模板包含了输出的HTML页面的静态部分的内容
  • 模板里面的动态内容在运行时被替换
  • 在views里面指定每个URL使用哪个模板来渲染页面
  • 模板继承与块(Template inheritance & Block)
    • 模板继承允许定义一个骨架模板,骨架包含站点上的公共元素(如头部导航,尾部链接)
    • 骨架模板里面可以定义Block块,每一个Block块都可以在继承的页面上重新定义/覆盖
    • 一个页面可以继承自另外一个页面
  • 定义一个匿名访问页面的基础页面,基础页面定义页头
  • 添加页面 jon/templates/base.html

企业域账号集成

  • 什么是目录服务Directory Service?
  • 可以直接使用域账号登录
  • 不用手工添加账号,维护独立密码
  • 可以集成OpenLDAP/ActiveDirectory
  • 项目选择OpenLDAP
  • DN:目录服务中的一个唯一对象

1、启动OpenLDAP容器:

shell 复制代码
docker run -p 389:389 -p 636:636 --name ldap-service --detach --hostname ldap-service osixia/openldap

# 检查是否启动成功
docker exec ldap-service ldapsearch -x -H ldap://localhost -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin

参考文档:https://choubaodxs.github.io/blogs/基础设施/docker搭建OpenLDAP.html#安装-docker方式

2、启动phpldapadmin容器:

bash 复制代码
docker run -p 6443:443 --name phpldapadmin-service --hostname phpldapadmin-service --link ldap-service:ldap-host --env PHPLDAPADMIN_LDAP_HOSTS=ldap-host --detach osixia/phpldapadmin

3、浏览器打开https://localhost:6443 默认账号:cn=admin,dc=example,dc=org 默认密码:admin

安装ldap django库

powershell 复制代码
pip install django-python3-ldap
相关推荐
晋阳十二夜5 小时前
【压力测试之_Jmeter链接Oracle数据库链接】
数据库·oracle·压力测试
GDAL7 小时前
Node.js v22.5+ 官方 SQLite 模块全解析:从入门到实战
数据库·sqlite·node.js
DCTANT8 小时前
【原创】国产化适配-全量迁移MySQL数据到OpenGauss数据库
java·数据库·spring boot·mysql·opengauss
AI、少年郎10 小时前
Oracle 进阶语法实战:从多维分析到数据清洗的深度应用(第四课)
数据库·oracle
赤橙红的黄10 小时前
自定义线程池-实现任务0丢失的处理策略
数据库·spring
DataGear11 小时前
如何在DataGear 5.4.1 中快速制作SQL服务端分页的数据表格看板
javascript·数据库·sql·信息可视化·数据分析·echarts·数据可视化
weixin_4383354011 小时前
分布式锁实现方式:基于Redis的分布式锁实现(Spring Boot + Redis)
数据库·redis·分布式
码不停蹄的玄黓11 小时前
MySQL Undo Log 深度解析:事务回滚与MVCC的核心功臣
数据库·mysql·undo log·回滚日志
Qdgr_11 小时前
价值实证:数字化转型标杆案例深度解析
大数据·数据库·人工智能
数据狐(DataFox)11 小时前
SQL参数化查询:防注入与计划缓存的双重优势
数据库·sql·缓存