Django是一个开放源代码的Web应用框架,由Python写成。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。
Django想要理解,首先要明白的就是Django的大致组成,它大致由四部分组成,也就是提到的MTV模型:
Model(模型):负责业务对象与数据库的对象(orm) // models.py
Template(模板):负责把数据展示给用户(前端的东西) // html
View(视图):负责业务逻辑,并在适当的时候会调用Model和Template // views.py
URL分发器:通过前台请求的url,来分配调到相应的函数操作,类似于网络中的路由表,控制网络的下一级的地址。 //urls.py
Django请求的生命周期如下
1、浏览器输入url发送访问请求,首先到达django的URL控制器(urls.py)。
2、URL控制器通过URL地址分配跳转到相应的View视图(views.py)中的对应函数。
3、View视图如果需要访问数据库操作数据,需要实例化Model模型中的类(models.py),然后通过对类的操作就是对数据库的操作。
4、
a)如果未创建数据库,Model模型里面是以面向对象的形式将每张数据表以类的方式创建出来,然后通过makemigrations就可以同步到数据库来进行表的创建和表关系的建立。
b)如果已创建数据库,并且已经同步数据库,那么实例化类的对象,就可以操作数据库了。
5、返回数据库请求的数据。
6、上一步请求的数据实在View视图实例化类的地方接收数据。
7、在View模型中,通过对数据的操作或者其他的相应操作、计算等,将数据参数传递到Template模板。
8、将View模板中的数据接收,通过将其嵌入到前端页面的代码中,实现漂亮的可视化展示。
如下为Django文件路径
1、wale 主文件名 2、manage.py 3、app文件(index、note、user)
1.先创建项目 django-admin startproject 项目名称
django-admin startproject mysite1 (wale)
- 再起项目
cd mysite1 (wale)
python3 manage.py runserver
3.应用在Django项目中是一个独立的业务模块,可以包含自己的路由,视图,模板,模型
app创建过程:
用manage.py 中的子命令 startapp 创建应用文件夹 python3 manage.py startapp 应用名称(必须是标识符命令规则)
python3 manage.py startapp index
在wale主项目文件夹中的settings.py中添加注册app
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'user',
'index',
'note'
]
4.主路由中include(‘app命字.url模块名’)进行分布路由的分配
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^user/',include('user.urls')),
url(r'^index/',include('index.urls')),
url(r'^note/',include('note.urls'))
]
在app文件夹中创建urls.py文件
用于分发将当前路由转到各个应用的路由配置文件的 urlpatterns 进行分布式处理
from django.conf.urls import url
from .import views
urlpatterns=[
#127.0.0.1:8000/index/
url(r'^$',views.index_view)
]
5 Django下配置使用 mysql 数据库
在wale主项目文件夹中的settings.py中更改配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'wale',
'USER':'root',
'PASSWORD':'123456',
'HOST':'127.0.0.1',
'PORT':'3306'
}
}
修改项目中__init__.py 加入如下内容来提供pymysql引擎的支持
import pymysql
pymysql.install_as_MySQLdb()
6 ORM 框架
即对象关系映射,它是一种程序技术,它允许你使用类和对象对数据库进行操作,从而避免通过SQL语句操作数据库
三大映射: 类——表 对象——行 类属性 ——表字段
在app中添加模型类
在model.py中进行类创建
# file : Node/models.py
from django.db import models
# Create your models here.
from user.models import User
class Note(models.Model):
title = models.CharField('标题', max_length=100)
content = models.TextField('内容')
created_time = models.DateTimeField('创建时间', auto_now_add=True)
updated_time = models.DateTimeField('更新时间', auto_now=True)
user = models.ForeignKey(User)
进行数据库迁移
- 迁移是Django同步您对模型所做更改(添加字段,删除模型等) 到您的数据库模式的方式
- 生成或更新迁移文件
-将每个应用下的models.py文件生成一个中间文件,并保存在migrations文件夹中
python3 manage.py makemigrations 生成同步文件
2.执行迁移脚本程序
-执行迁移程序实现迁移。将每个应用下的migrations目录中的中间文件同步回数据库
python3 manage.py migrate 同步同步文件
7 根据分布路由urls 对应 views.py
from django.http import HttpResponse
from django.shortcuts import render
# Create your views here.
def index_view(request):
if request.method =='GET':
return render(request,'index/index.html')
elif request.method =='POST':
pass
return HttpResponse('index is ok ')
8 根据views.py 中请求的HTML页面 在app文件夹中创建templates文件夹 ,在此文件夹中创建与app同名的文件夹,在此文件夹中创建HTML页面