Django
Python下有许多款不同的 Web 框架,如: Django、Tornado、Flask 等多种.
Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。Django相较与其他
WEB框架其优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能。
Django是一个开放源代码的Web应用框架,由Python写成.
Django采用了MVC的软件设计模式,即模型M,视图V和控制器C。
MVC是众所周知的模式,
即:将应用程序分解成三个组成部分:model(模型),view(视图),和 controller(控制器)。
其中:
M——管理应用程序的状态(通常存储到数据库中),并约束改变状态的行为(或者叫做“业务规则”)。
C—— 接受外部用户的操作,根据操作访问模型获取数据,并调用“视图”显示这些数据。控制器是将“模
型”和“视图”隔离,并成为二者之间的联系纽带。
V——负责把数据格式化后呈现给用户。
Django也是一个MVC框架。但是在Django中,控制器接受用户输入的部分由框架
自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)
视图(Views),称为 MTV模式:
M 代表模型(Model),即数据存取层。 该层处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
T 代表模板(Template),即表现层。 该层处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
V 代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板的相关逻辑。 你可以把它看作模型与模板之间的桥梁。
Django 基本配置
安装Django
选择Django栏目,输入项目名称,这里采用国际惯例的mysite。选择python解释器版本,点击create创建。
Django将自动生成下面的目录结构:
与项目同名的目录中是配置文件,templates目录是html文件存放也就是MTV中的T。manage.py是django项目管理文件。
setting文件默认代码注释
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.10/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '@jm-+mpxpv-@3%=o^fij9w+dtsil=18&6bpt*akkv+=422-vsl'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
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',
'blog',
]
# 中间件配置
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 = 'django_lesson.urls'
#模板(HTML页面)路径相关配置
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 = 'django_lesson.wsgi.application'
# Database
# https://docs.djangoproject.com/en/1.10/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/1.10/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.10/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.10/howto/static-files/
# 静态文件
STATIC_URL = '/static/'
#单级目录静态文件
STATICFILES_DIRS=(
os.path.join(BASE_DIR,"statics"),
)
urls.py详解
URl分发器 (路由配置文件)URL配置(URLconf)就像django所支持网站的目录。它在本质是URL模式以及要为改URL 模式调用的视图函数之间的映射表。你就是这种方式告诉django,对于这个URL调用这段代码, 对于那个URL调用那段代码,URL的加载时从配置文件中开始。
wsgi.py(运行的文件) --> settings.py
设置允许那些主机可以访问,安装指定的app,
安装指定的中间件,
指定模版目录,
指定数据库引擎,
指定国际化,
指定静态资源
加载路由规则 --> urls.py
path 来映射url和执行的views函数 --> 响应给用户结果 用的是render(渲染器):请求对象,模版名称,是一个字典 --> html字符串.利用网络输出流返回客户端 views在返回数据库之前完成数据的增删改查
开始做项目了!!!
其中models.py承载数据的对象并提供了对数据的curd(增删改查) 可以生成数
据库表在这里我设置了两个简单的字段用户名和密码