极客时间 - 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

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

如何利用Java获取当天的开始和结束时间

《如何利用Java获取当天的开始和结束时间》:本文主要介绍如何使用Java8的LocalDate和LocalDateTime类获取指定日期的开始和结束时间,展示了如何通过这些类进行日期和时间的处... 目录前言1. Java日期时间API概述2. 获取当天的开始和结束时间代码解析运行结果3. 总结前言在J

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程

《在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程》本文介绍了在Java中使用ModelMapper库简化Shapefile属性转JavaBean的过程,对比... 目录前言一、原始的处理办法1、使用Set方法来转换2、使用构造方法转换二、基于ModelMapper

Java实战之自助进行多张图片合成拼接

《Java实战之自助进行多张图片合成拼接》在当今数字化时代,图像处理技术在各个领域都发挥着至关重要的作用,本文为大家详细介绍了如何使用Java实现多张图片合成拼接,需要的可以了解下... 目录前言一、图片合成需求描述二、图片合成设计与实现1、编程语言2、基础数据准备3、图片合成流程4、图片合成实现三、总结前

基于Python开发PPTX压缩工具

《基于Python开发PPTX压缩工具》在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储,所以本文将使用Python开发一个PPTX压缩工具,需要的可以了解下... 目录引言全部代码环境准备代码结构代码实现运行结果引言在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,

nginx-rtmp-module构建流媒体直播服务器实战指南

《nginx-rtmp-module构建流媒体直播服务器实战指南》本文主要介绍了nginx-rtmp-module构建流媒体直播服务器实战指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. RTMP协议介绍与应用RTMP协议的原理RTMP协议的应用RTMP与现代流媒体技术的关系2