# DjangoLearnNote **Repository Path**: zy0826/django-learn-note ## Basic Information - **Project Name**: DjangoLearnNote - **Description**: Django学习笔记(自2020-12-13) - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-12-14 - **Last Updated**: 2022-11-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DjangoLearnNote #### 介绍 Django学习笔记(自2020-12-13) 1.环境准备 Anaconda集成环境--也可以用较小的miniconda 安装Django库 pycharm把Django库引入,代码自动提示 2.安装框架 #安装Django到本机环境 conda install django #创建Django项目 django-admin startproject meetingroom(meetingroom为项目名) #切换到项目的根目录,启动项目(监听本地所有的IP地址) python manage.py runserver 0.0.0.0:8000 或者 python manage.py runserver 浏览器本地访问:127.0.0.1:8000即可看到默认的首页。 #Django数据库 默认项目根目录下自动创建“db.sqlite3”文件 可以在settings.py里面指定“db.sqlite3”文件的存放路径或者更改成其他的数据库引擎,如MySQL #访问Django的admin管理后台 访问路径:127.0.0.1:8000/admin (开始无法访问,因为数据库还未初始化,提示没有这个表) (1).数据库迁移 makemigrations 创建数据库迁移,产生SQL脚本,使用migrate命令把默认的model同步到数据库, Django会自动为model建立数据库表。 ##数据库迁移 python manage.py makemigrations #由于没有定义model,所以这时候会提示没有改变“No changes detected” ##自动生成数据库表,生成了初始的数据库 python manage.py migrate 此时访问127.0.0.1:8000/admin即可看到后台登录页面。 (2).创建后台管理员账号 python manage.py createsuperuser 根据提示输入对应的用户名,邮箱和密码(admin/123456) (3).配置文件settings.py解读 调试模式,应用注册,第三方库配置,国际化等 #meetingroom项目文件 manage.py----与项目交互的命令行工具集的入口(python manage.py命令可以看到很多工具,如常用的runserver) db.sqlite3----数据库文件 (meetingroom项目文件夹包含以下:) init.py----python中声明模块的文件,内容默认为空 asgi.py----async server gateway interface(异步网关接口) wsgi.py---- web server gateway interface (web服务网关接口) urls.py----配置每个页面的路径,Django项目中所有地址(页面)都需要我们自己去配置URL settings.py----项目总配置文件 settings.py里面包含: 1)BASE_DIR, 项目根目录 2)SECRET_KEY, 安全码,Django生成项目的时候自动生成 3)DEBUG, 调试开关,项目发布的时候需要关闭 4)ALLOWED_HOSTS, 可以配置有哪些ip可以访问这个应用,一般不用写,我们会用Nginx等网关开放给公网访问 5)INSTALLED_APPS,已安装的应用入口:自己创建的应用,需要在这里添加注册 6)MIDDLEWARE, 中间件,Django自带的工具集 7)ROOT_URLCONF, 根文件:配置URLS的路径 8)TEMPLATES, 模板的配置文件,模板引擎,上下文处理器 9)DATABASES, 数据库配置 10)STATIC_URL, 静态文件的地址,Static files (CSS, JavaScript, Images) #配置请详细看:https://docs.djangoproject.com/en/3.1/ref/settings #Django后台国际化:zh-hans 3.创建管理职位的后台 #通过startapp创建模块或应用: python manage.py startapp jobs #注册jobs应用: 去settings.py的INSTALLED_APPS添加jobs #创建model: 应用jobs目录下的models.py定义模型(具体可看文档) #在应用和管理控制台配置中注册 应用jobs目录下的admin.py注册模型 from jobs.models import Job admin.site.register(Job) 最外面的大框架内setting.py注册应用 INSTALLED_APPS = [ "jobs" ] #makemigrations生成数据库脚本 python manage.py makemigrations python manage.py migrate //生成jobs_job表 #migrate修复数据库 #runserver python manage.py runserver 0.0.0.0:8000 4.应用后台优化 (1)默认值设置:module设置defalit值,添加人,创建时间。列表页展示的字段 #添加、修改时间默认为现在的时间 create_date = models.DateTimeField(verbose_name="创建时间", auth_now_add=True) #使用 auto_now_add ,可以自动在创建时指定当前时间并使用了默认时区 modified_date = models.DateTimeField(verbose_name="修改时间", auto_now=True) #使用 auto_now,可以自动在模型保存时更新时间并使用了默认时区 #创建人、添加、修改时间字段不要在详情页展示,自动保存默认值(admin中定制我们的管理属性) #jobs/admin.py中,注册Job模型时,我们可传入第二个参数 #JobAdmin 模型的管理类:列表页展示的字段 + 详情页隐藏有默认值的字段 class JobAdmin(admin.ModelAdmin): # 在维护页隐藏添加,修改时间 exclude = ("creator", "create_date", "modified_date") # 后台管理列表展示的字段 list_display = ("job_name", "job_type", "job_city", "creator", "create_date", "modified_date") # 隐藏的字段直接提交是没有值的,在保存之前对模型的操作 def save_model(self, request, obj, form, change): obj.creator = request.user super().save_model(request, obj, form, change) admin.site.register(Job, JobAdmin) (2)自定义模板 django模板包含了输出html页面的静态资源部分内容 模板动态内容在运行时替换 在views指定每个url使用哪个模板来渲染页面(动态内容的数据或变量从views层中传递过来的) ● 模板继承与块 ○ 模板继承应许定义一个骨架模板,骨架包含站点上的公共元素(如头部导航,footer) ○ 骨架模板里面可以定义Block块,每个Block块都可以在继承的页面上重新定义或覆盖 ○ 一个页面可以继承自另一个页面 ● 定义一个匿名访问的基础页面,基础页面中定义页头 ● 添加页面 job/templates/base.html