Django总结一

概念
什么是框架?

  • 软件框架就是为实现完成某种软件开发时,提供了一些基础的软件产品
  • 框架的功能类型类似于基础设施,提供并实现最为基础的软件架构和体系
  • 通常情况下我们依据框架来实现更为复杂的业务程序开发
  • 二个字,框架就是程序的骨架

框架的特点

  • 可重用
  • 成熟、稳健
  • 易扩展、易维护

python中常见的框架

  • 大包大揽Django被官方称之为完美者的Web框架
  • 力求精简web.py和Tornado
  • 新生代微框架Flask和Bottle

Web框架中的概念

  • MVC
    -大部分开发语言中都有MVC框架
    -MVC框架的核心思想是:解耦
    -降低各种功能模块之间的耦合性,方便变更,更容易重构代码,最大程度上实现代码的重用
    -m表示model,主要用于对数据库层的封装
    -v表示view,用于向用户展示结果
    -c表示controller,是核心,用于处理请求、获取数据、返回结果

  • MVT
    -Django是一款python的Web开发框架
    -与MVC有所不同,属于MVT框架
    -m表示model,负责与数据交互
    -v表示view,是核心,负责接收请求、获取数据、返回结果
    -t表示template,负责呈现内容到浏览器

Django框架的介绍

  • Django是一个高级的Python Web框架,它鼓励快速开发和清洁,务实的设计
  • 由经验丰富的开发人员构建,它负责Web开发的许多麻烦,因此开发人员可以专注于编写应用程序,而无需重新造轮子
  • 它是开源免费的
  • 被官方称之为完美主义的Web框架
  • Django可以更快地构建更好的Web应用程序并减少代码

Django框架
快速开发:Django的宗旨在于帮助开发人员快速从概念到完成应用程序
安全可靠:Django认真对待安全性,帮助开发人员避免许多觉的安全错误
超可伸缩性:Web上的一些最繁忙的网站利用了Django快速灵活扩展的能力

安装
win10 cmd命令安装

pip install django==1.11.11

检测当前Djang版本

python -m django --version

Django快速入门
项目创建与运行
1.创建项目
cmd命令 django-admin startproject myweb
2.运行开发服务器命令 python manage.py runserver
注:配置 ALLOWED_HOSTS = ['*']

创建应用
与manage.py同一目录下,执行命令

python manage.py startmyapp myapp

编辑视图
文件myapp/views.py中,

from django.http import HttpResponse

def index(request):
		return HttpResponse("Hello ,boy!")

这个是Django中最简单的视图,要调用视图,需要将其映射到一个URL,因此我们需要一个URLconf。
此时,在myapp目录中创建一个URLconf,在myapp/urls.py文件中的代码:

from django.conf.urls import url
from . import views

urlpatterns = [
		url(r'$',views.index,name = "index"),
]

子由路由有了,还需要配置主路由,以将主路由指向子路由。在myweb/urls.py中配置如下:

from django.conf.urls import include,url
from django.contrib import admin

urlpattern = [
		url('r^admin/',admin.site.urls),
		url('r^myapp/',include(myapp.urls)),
]

其中include()函数允许引用其他URLconfs。请注意,该include()函数的正则表达式没有$(字符串匹配字符),而是尾部的斜杠。每当Django遇到include(),它会排除与该点分配的任何部分,并将剩余的字符串发送到随附的URLconf进行进一步处理。
现在已经将index视图连接到URLconf中,现在去验证它一下,cmd中命令:python manage.py runserver 0:8000
可在浏览器中,地址:localhost:8000/myapp/(前面附上http://),观察效果。“Hello ,boy!”

项目的模型
连接MySWL数据库的配置
默认情况下,配置使用SQLite。若不使用SQLite作为数据库,则需要额外的设置,例如USER,PASSWORD和HOST必须加入。
其中ENGINE设置为数据库后端使用。内置数据库后端有:

'django.db.backends.postgresql'
'django.db.backends.mysql'
'django.db.backends.sqlite3'
'django.db.backends.oracle'

在myweb/setting.py中,配置DATABASES

DATABASES = {
		‘ENGINE’:'django.db.backends.mysql',
		'NAME':'mydemo',
		'USER':'root',
		'PASSWORD':'',
		'HOST':'localhost',
		'PORT':'3306',
}

注:Django使用MYSQL数据库需要安装PyMySQL,命令如下:

pip install pymysql

myweb/__init__.py中:

import pymysql
pymysql.install_as_MySQLdb()

创建模型
在咱们简单的应用程序中,去创建一个stu表信息操作的Model类。
在maapp/models.py文件中

from django.db import models
class Stu(model.Model):
		'''自定义Stu表对应的Model类'''
		#定义属性:默认主键自增id字段可不写
		#id = models.AutoField(primary_key=True)
		name = models.CharField(max_length=16)
		age = models.SmallIntegerField()
		sex = models.ChaiField(max_length=1)
		classid = models.CharField(max_length=8)

		#定义默认输出格式
		def __str__(self):
				return "%d:%s:%d:%s:%s"%(self.id,self.name,self.age,self.sex,self.classid)

		#自定义对应的表名,默认表名:myapp_stu
		class Meta:
				db_table="stu"

激活模型
要将应用程序包括在我们的项目中,我们需要在设置中添加对其配置类的引用INSTALLED_APPS.。
在myweb/settings.py文件中,在INSTALLED_APPS里添加’myapp.apps.MyappConfig’,或者写成‘myapp’

模型的使用
进入交互式Python shell,并使用Django提供的免费API

python manege.py shell
mod = Stu.objects
#获取所有信息
lists = mod.all()
for v in lists:
		print(v)

#获取单条信息
mod.get(id=1)
mod.get(id=2)

在myapp应用视图中使用
在文件myapp/views.py中

from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import Stu

def index(request):
		return HttpResponse("Hello Django!")

def stu(requtest):
		#获取所有stu表信息
		lists = Stu.objects.all()
		print(lists)
		#获取单条学生信息
		print(Stu.objects.get(id=1))

		return HttpResponse("ok")

配置stu函数的访问路由
在myapp/urls.pyt文件中

url(r'^stu$',views.stu)

启动服务后,可在浏览器中访问,http://localhost:8000/myapp/stu

Model模型
模型是数据的唯一的、权威的信息源。它包含所存储的必要字段和行为。通常每个模型对应数据库中唯一的一张表。

  • 每个模型都是django.db.modelsModes的一个Python子类
  • 模型的每个属性都表示为数据库的一个字段
  • Django提供一套自动生成的用于数据库访问的API,极大减轻开发人员工作量

启用网站Admin管理
1.数据迁移; python manage.py mygrate
2.创建管理员账户;
3.启动开发服务器
4.设置时区;
5.将定义的应用程序加入到后台管理 ;
6.深入设置后台管理;

路由

Django的URL路由
一个干净优雅的URL方案是高质量的Web应用程序中的一个重要细节
Django可以让人自己设计URL,无论你想要什么,没有框架限制。
要为应用程序设计URL,可以非正式地的创建一个名为URL(URL配置)的python模块。
这个模块是纯Python代码,是 一个简单的Python模式(简单的正则表达式)到Python函数(视图)之间的映射。

Django是如何处理一个请求的呢?
根路由——查找变量urlpatterns———子路由(Django按 顺序运行每个URL模式,并在匹配所请求的URL的第一个URL中停止)——视图——若没有正则表达式匹配则会报错

示例:

from django.conf.urls import url
from . import views

urlpatterns = [
		url(r'^fun$',views.fun),
		url(r'^fun2/([0-9]{4})/$',views.fun2),
		url(r'^fun3/([0-9]{4})/([0-9]{2})/$',views.fun3),
		url(r'fun4/([0-9]{4})/([0-9]{2}/(0-9)+)/$',views.fun4),
]

通过浏览器访问服务
注:url路由由上而下进行匹配,如果在上面就匹配成功,则不会向下匹配
通过浏览器访问服务
127.0.0.1:8000/abc ==>根路由 ==>加载子路由(myweb/urls.py)
> 正则匹配访问的路径(path)>视图函数(views.index)
==> views.py index() 响应内容

命名组
上面为简单实例,属于正则表达式非命名组(通过括号)捕获URL定位,并将他们作为位置参数传递给视图。
在更高级的使用中,我们可以使用正则表达式命名组来捕获URL定位,并将它们作为关键字参数传递给视图
在Python正则表达式中,正则表达式命名组的语法是(?Ppattern),其中命名组中的命名就是name,并且pattern是某些匹配的模式
实例:

from django.conf.urls import url
from . import views

urlpatterns = [
		url(r'^fun/2018/$',views.fun),
		url(r'^fun2/(?P[0-9]{4}/)$',views.fun2),
		url(r'^fun3/?P[0-9]{4}/(?P[0-9{2}])/$',views.fun3),
		url(r'^fun4/?P[0-9]{4}/(?P[0-9]{2})/(?P[0-9]{2})/$',views.fun4)
]

Mode模型

模型与数据库的关系
模型(Model)负责业务对象和数据库的关系映射(ORM)
ORM是“对象-关系-映射”的简称,主要任务是:

  1. 根据对象的类型生成表结构
  2. 将对象、列表的操作转换为sql语句
  3. 将sql查询到的结果转换为对象、列表

为什么要使用模型
Model是MVC框架中重要的一部分,主要负责程序中用于处理数据逻辑的部分。通常模型对象负责在数据库存储数据。
它实现了数据模型与数据的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库
windows环境安装mysql
cmd命令安装 pip install pymysql
Django项目中配置数据库
修改settings.py文件中的DATABASE配置项

DATABASES = {
		‘default’:{
		'ENGINE':'django.db.backends.mysql',
		'NAME':'**',
		'USER':'root',
		'PASSWORD':'',
		'HOST':'localhost',
		'PORT':'3306',
		}
}

告诉Django在接下来的mysql操作中使用pymysql
在myweb/init.py,写入导入pymysql代码:

import pymysql
pymysql.install_as_MySQLdb()

开发流程

  1. 在models.py中定义模型类,要求继承自models.Model
  2. 把应用加入settings.py文件的installed_app项
  3. 生成迁移文件 python manage.py makemigrations
  4. 执行迁移文件 python manage.py migrate
  5. 使用模型类进行crud操作

视图

模板

你可能感兴趣的:(Python)