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

2024-05-09 00:04

本文主要是介绍极客时间 - 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
pip install django==5.0
查看django版本
python -m django --version
创建项目
django-admin startproject recruitment
启动服务
python manage.py runserver 0.0.0.0:8000
创建应用
 python .\manage.py startapp jobs

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

生成迁移文件
python .\manage.py makemigrations
迁移数据
python .\manage.py migrate 
创建后台管理员账号
 python .\manage.py createsuperuser
创建模型
from datetime import datetimefrom 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)
注册模型
from django.contrib import adminfrom jobs.models import Job# Register your models here.
admin.site.register(Job)
注册应用

在settings.py INSTALLED_APPS下注册应用

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','jobs'
]

快速迭代完善应用

设置Django Admin模型显示的字段
class JobAdmin(admin.ModelAdmin):list_display = ("job_name", "job_type", "job_city", "creator", "created_date", "modified_date")admin.site.register(JobAdmin)
设置Django Admin新增/修改时不需要手动编辑的字段
class JobAdmin(admin.ModelAdmin):exclude = ("creator", "created_date", "modified_date")
admin.site.register(JobAdmin)
设置Django Admin创建/修改人为当前登录用户
class JobAdmin(admin.ModelAdmin):def save_model(self, request, obj, form, change):obj.creator = request.usersuper().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容器:

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/%E5%9F%BA%E7%A1%80%E8%AE%BE%E6%96%BD/docker%E6%90%AD%E5%BB%BAOpenLDAP.html#%E5%AE%89%E8%A3%85-docker%E6%96%B9%E5%BC%8F

2、启动phpldapadmin容器:

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库

pip install django-python3-ldap

这篇关于极客时间 - Django快速开发实战的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/971819

相关文章

springboot security快速使用示例详解

《springbootsecurity快速使用示例详解》:本文主要介绍springbootsecurity快速使用示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录创www.chinasem.cn建spring boot项目生成脚手架配置依赖接口示例代码项目结构启用s

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

Django序列化中SerializerMethodField的使用详解

《Django序列化中SerializerMethodField的使用详解》:本文主要介绍Django序列化中SerializerMethodField的使用,具有很好的参考价值,希望对大家有所帮... 目录SerializerMethodField的基本概念使用SerializerMethodField的

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Python实战之屏幕录制功能的实现

《Python实战之屏幕录制功能的实现》屏幕录制,即屏幕捕获,是指将计算机屏幕上的活动记录下来,生成视频文件,本文主要为大家介绍了如何使用Python实现这一功能,希望对大家有所帮助... 目录屏幕录制原理图像捕获音频捕获编码压缩输出保存完整的屏幕录制工具高级功能实时预览增加水印多平台支持屏幕录制原理屏幕

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

OpenManus本地部署实战亲测有效完全免费(最新推荐)

《OpenManus本地部署实战亲测有效完全免费(最新推荐)》文章介绍了如何在本地部署OpenManus大语言模型,包括环境搭建、LLM编程接口配置和测试步骤,本文给大家讲解的非常详细,感兴趣的朋友一... 目录1.概况2.环境搭建2.1安装miniconda或者anaconda2.2 LLM编程接口配置2