部署Django
一、简介Django是一个开放源代码的Web应用框架,由Python写成最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站2005年7月在BSD许可证下发布二、框架介绍Django 框架的核心组件有:用于创建模型的对象关系映射为最终用户设计的完美管理界面一流的 URL 设计设计者友好的模板语言缓存系统三、MVC模式

把数据存取逻辑、业务逻辑和表现逻辑组合在一起的概念被称为软件架构的Model - View - Controller(MVC模式)在这个模式中,Model代表数据存取层,View代表的是系统中选择显示什么和怎么显示的部分,Controller指的是系统中根据用户输入并视需要访问模型,以决定使用哪个视图的那部分四、MTV模式

Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同
M 代表模型(Model):负责业务对象和数据库的关系映射(ORM)
T 代表模板 (Template):负责如何把页面展示给用户(html)
V 代表视图(View):负责业务逻辑,并在适当时候调用Model和Template

除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template

MTV响应模式web服务器(中间件)收到一个http请求Django在URLconf里查找对应的视图(View)函数来处理http请求视图函数调用相应的数据模型来存取数据、调用相应的模板向用户展示页面视图函数处理结束后返回一个http的响应给Web服务器Web服务器将响应发送给客户端五、安装Django1、配置虚拟环境

1-1. 创建虚拟环境

[root@room9pc01 day20]# mkdir -pv /opt/py3env[root@room9pc01 day20]# ls /opt/py3env[root@room9pc01 day20]# python3 -m venv /opt/py3env/djenv

1-2. 激活虚拟环境

[root@room9pc01 day20]# source /opt/py3env/djenv/bin/activate激活之后,运行python默认是py3

1-3. 默认激活之后,安装django,就是安装在了虚拟环境下

(djenv) [root@room9pc01 day20]# pip install django==1.11.6(djenv) [root@room9pc01 day20]# pip install pymysql

注意:如果以上方式无法安装可以采用如下方式

1) 更换镜像站点(djenv) [root@room9pc01 day20]# cat ~/.pip/pip.conf[global]index-url=http://pypi.douban.com/simple[install]trusted-host=pypi.douban.com2)查看当前环境安装的软件包(djenv) [root@room9pc01 day20]# pip freezeasn1crypto==0.24.0cffi==1.11.5cryptography==2.3.1Django==1.11.6idna==2.7pycparser==2.18PyMySQL==0.9.2pytz==2018.5six==1.11.0(djenv) [root@room9pc01 day20]# pip freeze > pkgs.txt(djenv) [root@room9pc01 day20]# pip install --download /存储目录 pkgs.txt(djenv) [root@room9pc01 day20]#pip install 文件名2、Django

2-1. 创建项目

(djenv) [root@room9pc01 day20]# django-admin startproject mysite(djenv) [root@room9pc01 day20]# cd mysite/

2-2. pycharm设置,使用虚拟环境

file -> settings -> project xxx -> project interpreter -> 添加现有环境找到/opt/py3env/djenv/bin/python

2-3. 为django项目创建数据库

(djenv) [root@room9pc01 mysite]# mysql -uroot -ptedu.cnMariaDB [(none)]> create database dj_tedu default charset utf8;

2-4. 修改django的设置 settings.py

ALLOWED_HOSTS = '*' # 允许所有客户端访问DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'dj_tedu', 'USER': 'root', 'PASSWORD': 'tedu.cn', 'HOST': '127.0.0.1', 'PORT': '3306', }}LANGUAGE_CODE = 'zh-Hans'TIME_ZONE = 'Asia/Shanghai'

2-5. 加载连接mysql的模块,在__init__.py中写入以下内容

import pymysqlpymysql.install_as_MySQLdb()

2-6. 启动服务

(djenv) [root@room8pc16 mysite]# python manage.py runserver 0:8000

2-7. 生成数据库

(djenv) [root@room9pc01 mysite]# python manage.py migrate

2-8. 创建后台管理员

(djenv) [root@room9pc01 mysite]# python manage.py createsuperuser

2-9. 启动服务后,访问http://127.0.0.1:8000/admin3、Django基础测试

3-1. 新建视图

# vim mysite/views.pyfrom django.shortcuts import HttpResponsedef index(request): return HttpResponse('<h2>Hello World!</h2>')

3-2. 修改urls.py,访问主页时,使用views模块的index函数响应from django.conf.urls import urlfrom django.contrib import adminfrom . import viewsurlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^$',views.index, name='index'), # name='index'是首页URL的]4、管理“投票”应用

4-1. 创建应用

(djenv) [root@room9pc01 mysite]# python manage.py startapp polls

4-2. 在项目中注册应用,修改settings.py

INSTALLED_APPS = [ ... ... 'polls',]

4-3. 规划url,polls应用下有很多个页面,但是每个页面访问时,都以http://127.0.0.1/polls开头,如http://127.0.0.1/polls/1 polls应用有自己的URLConf,当访问到http://127.0.0.1/polls开头的网址都交给polls应用的urls.py

# vim mysite/urls.pyfrom django.conf.urls import url, includeurlpatterns = [ ... ... url(r'^polls/', include('polls.urls')),]# vim polls/urls.pyfrom django.conf.urls import urlurlpatterns = [ url(r'^$'),

4-4. 创建应用的url映射文件

# vim polls/urls.pyfrom django.conf.urls import urlfrom . import viewsurlpatterns = [ url(r'^$', views.polls_index, name='polls_index'),]

4-5. 创建视图

# vim polls/views.pyfrom django.shortcuts import render, HttpResponsedef polls_index(request): return HttpResponse('<h2>Polls index</h2>')

4-6. 创建模版

(1) 创建模板目录[root@room9pc01 mysite]# mkdir -p polls/templates/polls #templates是django固定的,polls是存放网页文件(2)创建模板文件# vim polls/templates/polls_index.html(3)更改视图views.pydef polls_index(request): return render(request,'polls/polls_index.html')

4-7. 添加boostrap样式

将前面解压的bootstrap拷贝过来[root@room9pc01 mysite]# cp -r ../../day18/static/ polls/在模版文件polls_index.html中添加引用文件顶部增加一行:{% load staticfiles %}head标签中加入<link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">5、建立模型Model

5-1. 创建ORM映射类

# vim polls/models.pyfrom django.db import modelsclass Question(models.Model): question_text = models.CharField(max_length=200) publish_date = models.DateTimeField() def __str__(self): return self.question_textclass Choice(models.Model): choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0) question = models.ForeignKey(Question, models.CASCADE) def __str__(self): return self.choice_text

5-2. 生成数据库中的表

(djenv) [root@room8pc16 mysite]# python manage.py makemigrations(djenv) [root@room8pc16 mysite]# python manage.py migrate

5-3. 在数据库中show tables查看表名

5-4. 查看表中字段

(1)django会在表中自动加入一列id,作为主键(2)表中的每个字段与类变量相同(3)外键是类变量名加上_id

5-5. 把模型注册到后台管理界面,修改polls/admin.py如下:

from django.contrib import adminfrom .models import Question, Choiceadmin.site.register(Question)admin.site.register(Choice)

5-6. 访问http://127.0.0.1:8000/admin,在后台可以添加数据