一.Django项目的创建与介绍
安装Django:
在指定解释器环境下安装Django 1.11.x
在真实python3环境下: pip3 install django==1.11.x
查看Django版本:
diango-admin --version
如果安装出错,采用管理员命令行
创建项目:
先前往目标路径,然后执行:diango-admin startproject project_name
''' project_name:项目目录,包含项目最基本的一些配置 -- __init__.py:模块的配置文件 -- settings.py:配置总文件 -- urls.py:url配置文件,django项目中的所有页面都需要对其配置url地址 -- wsgi.py:(web server gateway interface),服务器网关接口,python应用与web服务器直接通信的接口 templates:模板文件夹,存放html文件的(页面),支持使用Django模板语言(DTL),也可以使用第三方(jinja2) manage.py:项目管理器,与项目交互的命令行工具集的入口,查看支持的所有命令python3 manage.py '''
二.应用的创建与介绍
Django是面向应用开发,在应用中完成具体的业务逻辑;应用app指的是项目中的一个功能模块,一个项目可以拥有多个功能模块,但至少有一个,Django称之为app。
创建app(在项目目录下):python3 manage.py startapp app_name
去项目的settings文件添加 应用名 到INSTALLED_APPS
''' migrations:数据迁移(移植)模块,内容都是由Django自动生成 -- __init__.py __init__.py admin.py:应用的后台管理系统配置 apps.py:django 1.9后,本应用的相关配置 models.py:数据模型模块,使用ORM框架,类似于MVC模式下的Model层 tests.py:自动化测试模块,可以写自动化测试脚本 views.py:执行相应的逻辑代码模块 '''
终端启动项目(项目根目录下):python3 manage.py runserver 127.0.0.1:7777
三.配置文件简介
项目目录下settings.py文件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
""" Django settings for dg02 project. Generated by 'django-admin startproject' using Django 1.11.11. For more information on this file, see https://docs.djangoproject.com/en/1.11/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/1.11/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/1.11/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! # 项目安全码 SECRET_KEY = '&1(3_+f3o*#_hxzeyq1js^@%kkhmo8#@#$6*-dg2(6sd_l#w(-' # SECURITY WARNING: don't run with debug turned on in production! # 开发阶段采用debug DEBUG = True # 可以访问该项目的host们 ALLOWED_HOSTS = [] # Application definition # 配置app INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app.apps.AppConfig', ] # 中间件 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 = 'dg02.urls' # 模板配置 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(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', ], }, }, ] # 网关接口 WSGI_APPLICATION = 'dg02.wsgi.application' # Database # https://docs.djangoproject.com/en/1.11/ref/settings/#databases # 数据库配置 # DATABASES = { # 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), # } # } DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'dg2', 'HOST': '127.0.0.1', 'PORT': 3306, 'USER': 'root', 'PASSWORD': 'root' } } # Password validation # https://docs.djangoproject.com/en/1.11/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/1.11/topics/i18n/ # 国际化 LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.11/howto/static-files/ # 静态文件 # STATIC_URL = '/test/' # 静态文件请求的根路由 # STATIC_URL = '/static/' # 可以代表n个文件夹 # href="/static/" # STATICFILES_DIRS = [ # os.path.join(BASE_DIR, 'static'), # 就是配置static对应检索的文件夹们 # os.path.join(BASE_DIR, 'static1'), # ] # href="/static/css/index.css" # 最终版本 STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static') ] # href="/static/css/index.css"
四.Pycharm搭建项目
1.选择有django环境的解释器创建项目
2.选择项目目录(从项目目录开始,目录文件夹及子文件夹不要出现中文,保证电脑名字不为中文)
3.配置默认模板语言,模板路径,app名
4.启动
五.生命周期
1.浏览器发送请求
2.wsgi服务器接收到请求,将请求解析交给Django
3.Django中间件过滤请求信息,交给路由
4.路由完成业务逻辑的分发,到指定app下views中指定的视图函数
5.视图函数完成具体的业务逻辑,返回响应结果
6.将处理结果通过服务器返回给浏览器
六.项目响应请求
响应:
from django.shortcuts import render, redirect, HttpResponse # Create your views here. def index(request): return HttpResponse('响应了')
模板页面:
from django.shortcuts import render, redirect, HttpResponse # Create your views here. def index(request): return render(request, 'index.html')
重定向:
from django.shortcuts import render, redirect, HttpResponse # Create your views here. def index(request): return redirect('/重定向的路由')
七.静态文件加载
静态文件的根路由 => 规定了加载静态文件的起点
#1. 项目目录下 settings.py文件 STATIC_URL = '/static' # static指的是路由 # 下方规定静态文件可以放入的文件夹 STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static') # static指的才是文件夹 ] # 直接导致模板页面导入静态文件起点: # <link rel="stylesheet" href="/static/css/index.css"> #2.在项目根目录下创建static文件夹 #3.静态文件就放在static根目录或子目录下 #4.获取静态文件:/static/目标文件(可以包含static子文件夹路径)
八.请求及数据
''' 请求路径: 1.空着:默认向当前路径发送请求 2.http://127.0.0.1:8801/testAction/:向testAction路径发送请求 3./testAction/: 向testAction路径发送请求(推荐) 在视图函数中 请求方式:request.method GET请求获取数据:request.GET.get('key', None) # 当key不存在,用None替换 POST请求获取数据:request.POST.get('key', None) # 当key不存在,用None替换 '''
九.配置Mysql完成数据迁移
''' 1.在settings.py配置Mysql数据库信息 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'dg2', 'HOST': '127.0.0.1', 'PORT': 3306, 'USER': 'root', 'PASSWORD': 'root' } } 2.在项目或应用的init文件中修改连接数据库的模块pymysql import pymysql pymysql.install_as_MySQLdb() 3.在项目目录下,执行(生成迁移数据,没有映射到数据库):python3 manage.py makemigrations 4.将迁移数据映射到数据库:python3 manage.py migrate '''
十.简单的增删改查
''' # 增 User.objects.create(usr='abc'.pwd='123') # 第一种方式 user=User(usr='abc',pwd='123') user.save() # 第二种方式 # 删 User.objects.filter(id=1).delete() # 改 User.objects.filter(pwd='123').update(pwd='11') # 查 User.objects.filter(pwd='11').all() User.objects.filter(pwd='11').first() '''