Django项目初启

Django

背景

  • 2003诞生 它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的

MVT(框架)

  • Models 模型 数据库
  • Views 视图 放和拿
  • Template 模板 前端
    • From 表单 django 会根据你后台数据库字段及表单层的设计对应的给你创建HTML关于表单的代码

Django优点

  • 对象关系映射(Object Relational Mapping ORM):通过定义映射类来构建数据模型,将模型与关系型数据库连接起来,使用ORM框架内置的数据库接口可实现复杂的数据操作。(简单来说就是把数据库的语句换成了python可识别的语言)
  • URL设计:开发者可以设计任意的URL(网站地址), 而且支持使用正则表达式设计。
  • 模板系统:提供可扩展的模板语言,模板之间具有可继承性。
  • 表单处理:可以生成各种表单模型,而且表单具有有效性检验功能。
  • Cache系统:完善的缓存系统,可支持多种缓存方式
  • 用户管理系统:提供用户认证,权限设置和用户组功能,功能扩展性强。
  • 国际化:内置国际化系统,方便开发出多语言的网站。
  • admin管理系统:内置admin管理系统,系统的扩展性强。

Django项目目录

用django-admin startproject demo 创建一个demo项目
文件结构如下:
demo/				# 最外层 这个是整个项目的容器文件夹,可以随意改名字
	
    demo/			# 内层的demo 是这个项目中关于配置文件的一个管理文件夹,这个不允许改名字
		
        __init__.py	#初始化文件,代表这个文件夹是一个包,一个模块,demo文件夹就是一个模块了
		
        settings.py # 这个是整个项目的配置文件,配置中间,配置邮件等
		
        urls.py		# django项目的总路由配置文件。网站的地址信息
        
		wsgi.py		# 全称为Python Web Server Gateway Interface,即为python服务器网关接口,					   是python应用与Web服务器之间的接口,用于Django项目在服务器上的部署和上线,一 					   般不需要修改
	manage.py		# 命令行工具,允许以多种方式与项目交互。 可输入 python manage.py help 查看					    该工具的具体用法 

Django的创建的App目录

  • 使用命令创建app: python manage.py startapp frist

    • 创建了App必须把App名称添加到INSTALL_APPS里面。

      frist/
      	migrations/		# 数据库前后是否有变化,生成出迁移文件
          
      	static/			# 创建App后存放App中的静态资源文件,自己手动添加
          
      	templates/		# 创建App后存放App中的模板文件,自己手动添加
          
      	__init__.py
      	admin.py
      	apps.py
      	models.py
      	tests.py
      	urls.py			# 创建App后由系统总路由映射到App的路由文件,自己手动添加
      	view.py
      

Django(settings)配置全览

"""
Django settings for mysite project.
Generated by 'django-admin startproject' using Django 2.1.2.
For more information on this file, see
https://docs.djangoproject.com/en/2.1/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.1/ref/settings/
"""
import os

# 项目路径
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/

# 密匙配置
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '#g$qgqkee8csvp67l$(8ugkx%+i_9k%mbykw-%9zpbnyn!bb!='

# 调试模式
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

# 域名访问权限
ALLOWED_HOSTS = ['*']

# App列表
# Application definition
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myblog',
    'article',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'mysite.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR, 'templates'],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',

                # 自定义模版全局变量(默认变量)
                'article.views.global_settings',
            ],
        },
    },
]

WSGI_APPLICATION = 'mysite.wsgi.application'

# Database
# https://docs.djangoproject.com/en/2.1/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


# Password validation
# https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
     'NAME':'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/2.1/topics/i18n/

LANGUAGE_CODE = 'zh-Hans'

TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_L10N = True

USE_TZ = True

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.1/howto/static-files/

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static/")

项目路径 BASE_DIR:主要通过os模块读取当前项目在系统的具体路径,该代码在创建项目时自动生成,一般情况无需修改

密匙配置SECRET_KEY:是一个随机值,在项目创建的时候自动生成,一般情况下无需修改。主要用于重要的数据 加密处理,提高系统的安全性,避免遭到攻击者的恶意破坏。密匙主要用于用户密码,CSRF机制和会话Session等数据加密。

* 用户密码:Django内置一套用户管理系统,该系统具有用户认证和存储用户信息等功能,在创建用户的时候,将用户的密码通过密匙进行加密处理,保证用户的安全性。

* CSRF机制:该机制主要用于表单提交,防止窃取网站的用户信息来制造恶意请求

* 会话Session:Session的信息存放在Cookies,以一串随机的字符串表示,用于标识当前访问网站的用户身份,记录相关用户信息。

调试模式DEBUG:该值为布尔类型。如果在开发调试阶段应设置为True,在开发调试过程中会自动检测代码是否 发生更改,根据检测结果执行是否刷新重启系统。如果项目部署上线,将其改为False,否则会泄露系统的相关信息。

域名访问权限ALLOWED_HOSTS:设置可访问的域名,默认值为空。当DEBUG为True并且ALLOWED_HOSTS为空时,项目只允许以localhost127.0.0.1在浏览器上访问启动。当DEBUG为False时,ALLOWED_HOSTS为必填项,否则程序无法启动,如果想允许所有域名访问,可设置ALLOW_HOSTS=[’*’]。

App列表INSTALLED_APPS:告诉Django有哪些App。在创建项目时已有admin,auth,和session等配置等信息,这些都是Django内置的应用功能,各个功能说明如下。

* admin:内置的后台管理系统。
* auth:内置的用户认证系统。
* contenttypes:记录项目中所有的model元数据(Django的ORM框架)。
* session:Session会话功能,用于标识当前访问网站的 用户身份,记录相关用户信息。
* message:消息提示功能。
* staticfiles:查找静态资源路径。

静态资源(static)

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.1/howto/static-files/

STATIC_URL = '/static/'	
STATIC_ROOT = os.path.join(BASE_DIR, "static/")

# 设置根目录的静态资源文件夹static
STATICFILES_DIRS = [
    				os.path.join(BASE_DIR, 'static'),
# 设置App的静态资源文件夹
    				os.path.join(BASE_DIR, '/static')]

​ CSS也称层叠样式表(Cascading Style Sheets),是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。

​ JavaScript是一种直译式脚本语言,也是一种动态类型,弱类型,基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

  • STATIC_URL是必须配置的属性而且属性值不能为空。如果没有配置STATICFILES_DIRS,则STATIC_URL只能识别App里的static静态资源文件夹。
  • STATICFILES_DIRS是可选配置属性,属性值为列表或元组格式,每个列表(元组)元素代表一个静态资源文件夹,这些文件夹可行命名。
  • 在浏览器上访问项目的静态资源时,无论项目的静态资源文件夹是如何命名的,在浏览器上,静态资源的上级目录必须为static,而static而STATIC_URL的属性值,因为STATIC_URL也是静态资源的起始URL。

​ 除此之外,静态资源配置还有STATIC_ROOT,其作用是方便在服务器上部署项目,实现服务器和项目之间的映射。

STATIC_URL和STATICFILES_DIRS区别

  • STATIC_URL是必须配置的属性而且属性的值不能为空。如果没有配置STATICFILES_DIRS,则STATIC_URL只能识别App里面的static静态资源文件夹。
  • STATICFILES_DIRS是可选配置属性,属性值为列表或元组格式,每个列表(元组)元素代表一个静态资源文件夹,这些文件夹可自行命名。
  • 在浏览器上访问项目的静态资源时,无论项目的静态资源文件夹是如何命名的,在浏览器上,静态资源的上级目录必须为static,而static是STATIC_URL的属性值,因为STATIC_URL也是静态资源的起始URL。

模板路径(template)

  • 在web开发中,模板是一种较为特殊的HTML文档。这个HTML文档嵌入了一些能够让Python识别的变量和指令,然后程序解析这些变量和指令,生成完整的HTML网页并返回给用户浏览。模板是Django里面的MTV框架模式的T部分,配置模板路径是Django在解析模板时,如何找到模板所在的位置。创建项目时,Django以有初始的模板配置信息。如下:
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR, 'templates'],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',

                # 自定义模版全局变量(默认变量)
                'article.views.global_settings',
            ],
        },
    },
]
  • 模板信息是以列表格式呈现的,每个元素具有不同的含义,说明如下:
    • BACKEND:定义模板引擎,用于识别模板里面的变量和指令。内置的模板引擎有DjangoTemplatejinjia2.Jinjia2,每个模板引擎都有自己的变量和指令语法。
    • DIRS:设置模板所在的路径,告诉Django在那个地方查找模板的位置,默认为空列表
    • APP_DIRS:是否在App里面查找模板文件
    • OPTIONS:用于填充在RequestContext中上下文调用函数,一般情况下不做任何修改。

数据库设置(Databases)

  • 在settings文件下 有一个DATABASES属性

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3', 	  # 数据库引擎
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), # 本地sqllite3数据库位置
            'USER': 									  # 用户名
            'PASSWORD': 								  # 数据库密码
            'HOST':										  # 数据库主机地址
        			}
    			}
    #	默认的django使用sqllite3作为数据库
    	# django提供四种 ENGINE 数据库引擎
        	#	django.db.backends.mysql
            #	django.db.backends.oracle
            #	django.db.backends.splite3
    #	如果你使用的是 PostgreSQL 或者Mysql的话,已经是先创建了数据库,但是默认的SQLlite不需要
    
  • sqlite3 轻量级数据库(数据存放在文件里面)

  • 在Django连接MYSQL数据库时候如果提示django.db.utils.OperationalError的错误信息,这是因为MYSQL8.0版本的密码加密方式发生了变化,8.0版本的用户密码采用的是cha2加密方法。

    • 解决方法,把SQL语句将8.0版本加密方法改回原来的加密方式。

    • # newpassword 是我们设置的用户密码
      ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';
      FLUSH PRIVILEGES;
      

中间件(Middlewere)

中间件(Middleware)是处理Django的request和response对象的钩子。当用户在网站中进行单击某个按钮等操作时,这个动作是用户向网站发送请求(request);而网页会根据用户的操作返回相关的网页内容,这个过程称为响应处理(response)。从请求到响应的过程中,当Django接收到用户的请求时,Django首先经过中间件处理请求消息,执行相关的处理,然后将处理结果返回给用户,中间件的执行流程如图:

Alt

如上图,中间件的作用主要是处理用户的请求信息。开发者也可以根据自己的开发需求自定义中间件,只要将自定义的中间件添加到配置属性MIDDLEWARE中即可激活。一般情况下,Django默认的中间件配置均可满足大部分的开发需求。

    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',

配置属性MIDDLEWARE的数据格式为列表类型,每个中间件的设置顺序是固定的,如果随意变更中间件很容易导致程序异常,每个中间件的说明如下:

  • SecurityMiddleware:内置的安全机制,保护用户与网站的通信安全。
  • SessionMiddleware:会话Session。
  • LocaleModdleware:支持中文语言。
  • CommonMiddleware:处理请求信息,规范化请求内容。
  • CsrViewMiddleware:开启CSRF防护功能。
  • AuthenticationMiddleware:开启内置的用户认证系统。
  • MessageMiddleware:开启内置的信息提示功能。
  • XFrameOptionsMiddleware:防止恶意程序点击劫持。

修改时区及语言

  • LANGUAGE_CODE = ‘en-us’ #语言
  • TIME_ZONE = ‘UTC’ #时区
 LANGUAGE_CODE = 'zh-Hans'
 TIME_ZONE = 'Asia/Shanghai'

开启测试服务器

  • 用来展示你创建出来的空项目
  • /home/Publc_Class/5-17-django框架/
  • python3 manage.py runserver 0.0.0.0:9090
    • 开启了一个测试服务器
    • runserver 可以让你在浏览器看到效果,但是这个是测试服务器,压力不过百

创建默认数据库

  • 因为django自带的admin界面,首先需要数据库来支持
    • 我们来先创建出一个数据库
makemigrations 数据库前后是否有变化,生成出迁移文件
migrate 根据迁移文件 来对应的执行SQL语句 
python3 manage.py makemigrations
python3 manage.py migrate 
  • 如果数据库创建完成,那么目录结构下和manage.py同级的就会有一个db.splite3文件
  • 有了这个数据库,就可以创建超级用户来管理admin界面啦!

admin界面创建超级用户

  • 数据库有了,要创建超级用户
 Username (leave blank to use 'root'): root
 Email address: 2573799357@qq.com   
 Password: 
 Password (again): 
 Superuser created successfully.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
08-10
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值