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

慈云数据 6个月前 (05-13) 技术支持 84 0

Django快速开发实战

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

    初识Django:Django能做什么?

    Django适用场景

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

            Django的优点和缺点

            优点:

            极客时间 - 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表示关于职位管理的应用

                    极客时间 - Django快速开发实战
                    (图片来源网络,侵删)
                    生成迁移文件
                    python .\manage.py makemigrations
                    
                    迁移数据
                    python .\manage.py migrate 
                    
                    创建后台管理员账号
                     python .\manage.py createsuperuser
                    
                    创建模型
                    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)
                    
                    注册模型
                    from django.contrib import admin
                    from 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.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容器:

                              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
                              
微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon