Django框架-基础篇

Django框架简介

1、软件架构模式MVC和MTV

一、MVC模型

MVC(model view controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(model)、视图(view)和控制器(controller),具备耦合性低,重用性高,生命周期成本低等优势。css

 

二、MTV模型

Django框架的设计模式借鉴了MVC框架的思想,也是分别三部分,来下降各个部分之间的耦合性。html

Django的MTV分别表明:前端

  Model(模型):和数据库相关的,负责业务对象与数据库的对象(ORM)python

  Template(模板):放全部的html文件,负责如何把页面展现给用户mysql

           模板语法:目的是将自变量(数据库的内容)如何巧妙的嵌入到html页面中web

  View(视图):负责业务逻辑,并在适当的时候调用Model和Templatesql

  此外,Django还有一个URL分发器。它的做用是将一个个URL的页面请求分别发给不一样的Views处理,Views再调用相应的Model和Template。shell

三、MVC和MTCV的比较

2、Django 下载安装

查看django版本:数据库

cmd——>python -m django --version

pycharm——> import django ; print(django.version)

   命令行下载安装:

dos窗口中:
pip  install  django== 1.11.15 # 等号后为版本号,不加的话默认安装最新版本
pip  install  -i  https://pypi.doubanio.com/simple/  django==1.11.15(或者-i 指定源)

  pycharm的方式安装

打开pycharm -->file -->settings --> project interpreter --> 点击右侧绿色加号 -->在弹出对话框中输入django -->选中specify version,指定下载版本,默认最高版  -->最后点击左下角 install package

注:默认从https://pypi.python.org/simple下载模块,可更改国内的豆瓣源,点击install package 右侧的Manage Repositories 在里面添加其它的源,如https://pypi.doubanio.com/simple/

详细见下图:django

3、建立Django项目对象

  命令行建立:

切换目录到预存放项目文件的文件目录

django-admin  startproject   项目名称

eg:  django-admin  startproject    myblog

生成目录结构以下:

  • manage.py------启动文件 (Django项目里面的工具,经过它能够调用Django shell的数目和数据库等)
  • settings.py------包含了项目的一些设置,包括数据库信息、调试标志以及其余一些工做的变量。
  • urls.py-----------路径与视图函数的映射关系
  • wsgi.py ...........帮咱们实现socket,响应http请求

  注:命令行建立,不会建立templates模板【用于仅存放html文件,css,js等静态文件放到新建的static目录中】,

须要本身在项目根目录即与manage.py同级目录下建立templates文件夹,且要到settings.py中修改templates的DIRS中加入os.path.join(BASE_DIR,'templates')

  pycharm方式建立

 打开pycharm--->file ---->new project ---> 选中django 

 

 建立完成后项目目录结构以下:

注:上面app01为建立的一个应用,Mysite为建立django目录时,自动在项目名下创建一个同名的目录。

4、启动Django项目

  一、命令行方式

切换到django项目根目录下(含有manage.py 的文件)
# 默认为本地,端口为8000
python manage.py runserver    # 127.0.0.1:8000  
# 可修改端口
python manage.py runserver 80   # 127.0.0.1:80
# 可修改ip和端口,4个零表示全部人均可以访问
python manage.py runserver 0.0.0.0:80   # 0.0.0.0:80


注:当项目上线后,需将ip和端口改成实际的

  二、pycharm方式

一个项目就是一个包,不要单独执行某个py文件,而是运行整个项目

5、建立应用

注:由于一个项目要实现多个功能,所以一个Django项目能够分为不少个APP,用来隔离不一样功能模块的代码

若是不创建app也能够执行项目,即视图函数直接写在urls.py中,在settings.py中配置相关的模板,数据库信息,静态文件等信息。

  命令行建立app

python manage.py  startapp  应用名

eg: python manage.py startapp  app01

执行命令后,项目目录下多出一个app01的文件夹,目录结构以下:

app01/
    migrations         记录修改models即orm操做数据库的更改信息,每次更改都会在改目录下新建一个文件
        __init__.py     
    __init__.py        
    admin.py           
    apps.py            记录app信息,当在settings.py中注册app时是今后处找
    models.py          记录建立类【即至关如向数据库中建立表】在此处建立
    tests.py           
    views.py           本app本身的业务逻辑函数即视图函数写在这里

  使用PyCharm建立

可使用PyCharm的manage.py工具来执行命名。在主菜单栏中选择Tools,在下拉菜单中选择Run manage.py task,会出现以下图所示的工具对话框:


在弹出的命令窗口中直接输入下面的命令即可建立app:

startapp app01

使用PyCharm的manage.py工具执行命令时,只用输入命令及参数便可,再也不输入python manage.py了。

  注册app应用

建立完app后,想要使用,需先注册才能使用,在django根目录下的settings.py文件中的INSTALLED_APPS模块中注册app信息

格式以下:

应用名.apps.应用名Config
示例:【本质是导入应用目录下apps中为app创建的类】
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'classModel.apps.ClassmodelConfig' ]

apps.py文件内容以下图:

6、配置django项目与数据库mysql的链接

一、安装mysql数据库软件

二、安装 模块pymysql【python3.6后链接mysql只能用pymysql】

cmd--> pip3  install pymysql

三、手动链接数据库,建立一个库及建立一个操做此数据库的用户,赋予权限【django的ORM只能建立表,不能建立库】

# 建立库
create database db_name charset utf8;
# 建立用户及赋予权限
grant all privileges on db_name.* to 'userName'@'ip' identified by 'pwd';

四、在Django项目总配置文件setting.py同级目录下[不是app下的__init__]的__init__.py文件中配置项目使用pymysql来操做数据库

import pymysql

pymysql.install_as_MySQLdb()       # 告知django使用pymysql来链接书库

五、在Django项目总配置文件setting.py中的DATABASES模块中配置链接数据库相关信息,格式以下

DATABASES = {
                    'default': {
                            'ENGINE': 'django.db.backends.mysql',  # 修改数据库引擎,默认为sqlite3文本数据库
                            'NAME': 'db_name',
                            'USER': '**',
                            'PASSWORD':'***',
                            'HOST':'ip',
                            'PORT': 3306,     # 注意是数字,不是字符串
                        }
                    }

六、建表   在应用app的目录下的models.py中写类【必须继承models.Model类

from django.db import models   # 需先导入models模块

class Class(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=20, unique=True)

    def __str__(self):
        return self.name

# 在orm中
类      对应数据库中的       表
对象   对应数据库中的       记录(数据行)
属性   对应数据库中的       字段

七、建好类即表后,执行数据库迁移命令【让建立的表在数据库中生成】

# 记录models.py中类是否是有变化 将变化的内容记录下来 
python manage.py  makemigrations

# 将model的变动同步到数据库中
python  manage.py migrate


注:执行第一条命令后models.py中的变化就会在到migrations目录中建立一个新的文件并将变化写入其中
若是在原有表张增长字段的话,会提示要设置默认值,由于新的那列数据不能为空

7、项目启动后相关配置

  一、更改setting.py 

1.一、检查项目BASE_DIR是否以下:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

1.二、配置ALLOWED_HOSTS能够运行本项目的ip,'*' 表明全部

ALLOWED_HOSTS = ['*',‘127.0.0.1’,‘192.168.19.66’]
注:如想别人访问你的网站,需在启动项目时将ip配置为0.0.0.0,如何将运行项目的ip写入上面列表,用户就能够经过你的主机ip访问你的网站了

1.三、配置INSTALLED_APPS,为建立的应用app进行注册,否则操做数据库时报错

格式:'app_name.Apps.AppName.Config' 或 ‘app_name’

INSTALLED_APPS = [
    'classModel.apps.ClassmodelConfig'
]    

1.四、配置中间件MIDDLEWARE,注释csrf,让后台可以接收全部的post请求,不关闭django将对不合法的post拦截403

将 'django.middleware.csrf.CsrfViewMiddleware'注释掉,不然会出现下面的状况。

 

 

注:上面的方案,不建议使用,不安全,能够在html文件中要发送post请求的from表单里加入{% csrf_token %}就不用注释上面的csrf的中间件了

以下图:

 

前端实际效果为:

 

 

 

1.五、配置模块templates 中的DIRS须要检查下是否为空,若是为空,添加上os.path.join(BASE_DIR,'templates')

命令建立的项目未建立模板templates目录,需本身建立。

这是模板中没有设置,设置模板在python安装目录中找到以下图的路径,打开settings.py-tpl,相同位置添加上上os.path.join(BASE_DIR,'templates')。下次建立项目就可再也不手动添加。

1.六、settings.py中增长静态文件目录STATICFILES_DIRS【(js,css,image)存放目录】,这是放在templates中html文件可以使用js,css资源的关键

在项目根目录即与manage.py文件同级下建立静态文件夹static,若是有多个就建立多个,但网页中不管是放在那个文件中,开始都以/static/开头

1.七、templates文件夹下建立/或存放HTML文件,将html的js,css,imgs等文件放入images

  二、编辑urls.py文件,增长映射关系。

 业务函数的实现,业务函数与url的映射可都在此文件中书写,之后规范化,可将业务函数移入到应用的views.py中,此文件仅编辑业务函数与url的映射关系,再导入views.py中全部的业务函数

from app名 import views

下图为:直接将视图函数写在全局urls.py文件中

8、访问web

  一、局域网中的浏览器输入HTTP://IP:PORT/login 就可访问验证。

9、如何彻底的删除一个应用app? 

1.删除models.py 

  不管是删除一个单独的model仍是删除整个App,都须要首先删除models.py文件中的模型。

确认没有其余文件引用models.py中的类。

迁移或者删除你的数据库,Django提供了简便的方法方便用户删除某App下的全部数据(Django 1.7)。

python  manage.py migrate your_app_name zero   

  删除models.py中的数据模型。

2.删除App

  再次确认其余App中没有引用此App的文件

  删除整个App文件夹

  在settings.py的Installed Apps中移除该app

  在urls.py中移除该App相关内容。 

 10、Django快速开发配置小结:

在app的models.py建立类(即数据库中的表)
在views.py下建立业务视图函数[导入orm模块]
  from django.shortcuts import render
  from django.shortcuts import HttpResponse
  from django.shortcuts import redirect
  from classModel import models

在django的templates目录下建立前端html文件在在django的static目录下存放js,css.images 文件在urls.py下创建映射关系  from classModel import views

相关文章
相关标签/搜索