静态网站:无法与服务器进行交互
动态网站:允许与服务器进行交互
Django框架
1、WEB 与 服务器
1、WEB :表示用户可以浏览的网页(HTML,CSS,JS)
2、服务器
能够给用户提供服务的机器
1、硬件 与 软件
硬件范畴:一台计算机
软件范畴:一个能够接收用户请求并给出响应的程序
1、APACHE
2、TOMCAT
3、IIS(Internet Information Service)
4、Nginx
2、作用
1、存储WEB所需要的信息(HTML,图片,音频)
2、能够处理用户的请求(request)并给出响应(response)
3、执行服务器端的程序
3、WEB 与 服务器之间的关系
2、框架
1、什么是框架
框架是一个为了解决开放性问题而存在的一种结构。框架本身提供
了一些最基本的功能。我们需要在基本的功能基础上开发属于自己
的操作即可。
2、Python中的框架(WEB)
1、Django :重量级的WEB框架
2、Tornado :异步框架
3、Flask :轻量级框架
… …
3、Django 框架
1、什么是Django
是一个开源框架,2005年发布,采用Python语言开发。早期是做新
闻以及内容管理的网站。提供了强大的后台管理系统。
2、Django的框架模式 - MTV
M :Models 层
模型层,负责数据库的建模以及CRUD的操作
T :Templates 层
模板层,用于处理用户显示的内容的。如:html
V :Views 层
视图层,处理与用户交互的部分内容,从模型中获取数据再将
数据发送给模板,最终再将模板显示给用户
自行了解:MVC
M :Models 模型层
负责数据库的建模以及CRUD的操作
V :Views 视图层
处理用户显示的内容 。如:html
C :Controller 控制器
处理与用户交互的部分内容。接收请求,处理请求并响应
结果给客户端
MTV MVC
M ----- M
T ----- V
V ----- C
4、Django 框架的使用
1、Django的安装
1、查看已安装的Django版本
1、进入到终端以及python的交互模式
python3 / ipython3
2、在交互模式中 输入 import django
如果未报错:说明已经安装了Django
如果报错:说明未安装Django
3、查看已安装的版本
交互模式中:django.VERSION
tarena@tedu:~$ python3
>>> import django
>>>
In [1]: import django
In [2]: django.VERSION
Out[2]: (1, 11, 8, 'final', 0)
2、安装
1、在线安装 - 使用 pip / pip3
pip : 安装到python2.7下
pip3 : 安装到python3.5下
1、sudo pip3 install django
(默认安装Django的最高版本)
2、sudo pip3 install django==1.11.8
(指定安装1.11.8版本)
2、离线安装
1、下载所需的Django包
Django官网
http://www.djangoproject.com
2、在环境中解压Django包
tar -xvf Django-1.11.8.tar.gz
3、进入到目录中
cd Django-1.11.8
4、安装
sudo python3 setup.py install
2、Django文档
1、Django官网
http://www.djangoproject.com
2、DjangoBook
http://djangobook.py3k.cn/2.0/
3、离线文档
3、使用Django
1、创建目录 :用于保存Django项目
mkdir Django
(准备工作)
2、创建Django项目
使用 django-admin 指令 创建Django项目
django-admin startproject 项目名
tarena@tedu:~$ mkdir Django
tarena@tedu:~$ cd Django
tarena@tedu:~/Django$ django-admin startproject netease
tarena@tedu:~/Django$ ls
netease
tarena@tedu:~/Django$ tree
.
└── netease
├── manage.py
└── netease
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
3、启动服务,访问网站
在创建好的项目中,找到 manage.py 文件
通过 manage.py启动服务
python3 manage.py runserver
或
./manage.py runserver
访问地址:(只能在虚拟机浏览器访问)
http://127.0.0.1:8000/
http://localhost:8000/
tarena@tedu:~/Django$ cd netease
tarena@tedu:~/Django/netease$ python3 manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
August 03, 2018 - 02:20:21
Django version 1.11.8, using settings 'netease.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
4、Django的项目结构介绍
1、manage.py
负责执行django中的各项操作的文件
如:
启动服务
创建应用
数据库的同步操作
创建后台超级管理员
使用方式:
1、python3 manage.py 子命令
2、./manage.py 子命令
tarena@tedu:~/Django/netease$ python3 manage.py
Type 'manage.py help ' for help on a specific subcommand.
Available subcommands:
[auth]
changepassword
createsuperuser
[contenttypes]
remove_stale_contenttypes
[django]
check
compilemessages
createcachetable
dbshell
diffsettings
dumpdata
flush
inspectdb
loaddata
makemessages
makemigrations
migrate
sendtestemail
shell
showmigrations
sqlflush
sqlmigrate
sqlsequencereset
squashmigrations
startapp
startproject
test
testserver
[sessions]
clearsessions
[staticfiles]
collectstatic
findstatic
runserver
# manage.py
#!/usr/bin/env python3
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "netease.settings")
try:
from django.core.management import execute_from_command_line
except ImportError:
# The above import may fail for some other reason. Ensure that the
# issue is really that Django is missing to avoid masking other
# exceptions on Python 2.
try:
import django
except ImportError:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
)
raise
execute_from_command_line(sys.argv)
2、主文件夹(名称与项目名称相同)
1、__init__.py
项目初始化文件,每当服务器启动的时候,自动执行
2、urls.py
项目的基础路由配置文件/主路由配置文件
将请求地址映射到对应的视图上
http://127.0.0.1:8000/admin 回车
# urls.py
"""netease URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/1.11/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
]
3、wsgi.py
应用服务器的配置文件,暂时不用
4、settings.py
项目的主设置文件:模板,数据库,应用,...
1、BASE_DIR:当前项目所在的绝对路径
/home/tarena/Django/netease
2、DEBUG:调试模式
开发过程:推荐使用True
上线运行:必须改为False
3、ALLOWED_HOSTS
设置允许访问本项目的地址列表
如果不设置的话,只有本机(127.0.0.1/localhost)能够访问
推荐写'*',任何表示该机器的地址都可以访问当前项目
注意:如果允许被外部机器访问的话,则:
./manage.py runserver 0.0.0.0:8000
4、INSTALLED_APPS
指定已安装的应用,如果有自定义应用的话,需要在此注册
5、ROOT_URLCONF
6、TEMPLATES:指定模板的信息
7、DATABASES:指定数据库的信息
8、LANGUAGE_CODE:指定项目语言,允许修改为zh-Hans (简体中文)
9、TIME_ZONE:指定时区,建议修改为 Asia/Shanghai
“”"
Django settings for netease project.
Generated by ‘django-admin startproject’ using Django 1.11.8.
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
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(file)))
SECRET_KEY = ‘p20i!hu9h!1&ykk1k+&dc+t&-0#yt)ee33t7_o^#&nx@x$_3%8’
DEBUG = True
ALLOWED_HOSTS = []
INSTALLED_APPS = [
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
]
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 = ‘netease.urls’
TEMPLATES = [
{
‘BACKEND’: ‘django.template.backends.django.DjangoTemplates’,
‘DIRS’: [],
‘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 = ‘netease.wsgi.application’
DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.sqlite3’,
‘NAME’: os.path.join(BASE_DIR, ‘db.sqlite3’),
}
}
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’,
},
]
LANGUAGE_CODE = ‘en-us’
TIME_ZONE = ‘UTC’
USE_I18N = True
USE_L10N = True
USE_TZ = True
STATIC_URL = ‘/static/’