django简介
django是一个功能大而全的web框架,能帮助开发者快速的开发一个web系统,但也略显笨重,不过作为初学者此框架正合适入门。
django框架属于MTV模式:
- M是指models(模型层),应用的数据类型在此定义,实现应用中的业务对象和数据库的交互
- T是指templates(模板层),将系统后端运行结果渲染后,展现给用户
- V是是view(视图层),负责具体的业务逻辑运行,必要时调用models操作数据库,利用templates展现运行结果。
django除了上诉三层模块外,还有三个必不可少的的模块
- wsgiref模块 为请求监听socket并解析http协议,为响应封装http协议
- 路由层 为浏览器请求分配响应的视图函数处理
- 中间件层 对请求和响应数据做预处理
django的安装和项目创建
在linux系统中命令行直接下载
pip3 install django==2.2
在pycharm中settings-->project-interpreter-->添加django2.2
创建django项目
django-admin startproject 项目名
创建app应用
python3 manage.py startapp app01
注册app应用
在settings文件中对INSTALLED_APPS的值添加新应用的名字
手动创建模板目录
1、可以直接创建在项目根目录下
2、建议在各应用目录下创建命名为:templates/应用名 的目录
启动django项目
python manage.py runserver 127.0.0.1:8080
项目根目录
应用名
migrations 数据库迁移记录相关数据
admin.py django后台管理相关
models.py 模型表相关
views.py 视图函数相关
templates
应用名
项目名
settings.py 配置文件
urls.py 路由文件
wsgi.py http报文的解析和封装
manage.py 管理django入口文件
django链接数据库(MySQL)
# 默认用的是sqkite3
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# django链接MySQL
1.mysql模块安装
Django官方已经不建议使用pymysql库了,而是改用mysqlclient,直接pip安装即可。
2.第一步配置文件中配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'day60', # 数据库名,需提前创建
'USER':'root',
'PASSWORD':'admin123',
'HOST':'127.0.0.1',
'PORT':3306,
'CHARSET':'utf8'
}
}
静态文件配置
"""
我们将html文件默认都放在templates文件夹下
我们将网站所使用的静态文件默认都放在static文件夹下
静态文件
前端已经写好了的 能够直接调用使用的文件
网站写好的js文件
网站写好的css文件
网站用到的图片文件
第三方前端框架
...
拿来就可以直接使用的
"""
# django默认是不会自动帮你创建static文件夹 需要你自己手动创建
一般情况下我们在static文件夹内还会做进一步的划分处理
-static
--js
--css
--img
其他第三方文件
"""
在浏览器中输入url能够看到对应的资源,是因为后端提前开设了该资源的接口,如果访问不到资源 说明后端没有开设该资源的接口。
动态页面的接口大都在djang中使用urls.py路由文件来设置
静态页面的接口则在setting中通过STATIC_URL和STATICFILES_DIRS两个参数完成设置
"""
# 静态文件配置
STATIC_URL = '/ooo/'
访问静态文件时,URL必须以此为开头,类似于访问静态文件的令牌,
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static'),
os.path.join(BASE_DIR,'static1'),
os.path.join(BASE_DIR,'static2'),
]
组建静态文件目录列表,URL摒除STATIC_URL设置的value后,以剩下的path从上到下的在静态文件目录列表中匹配。
# 静态文件动态解析
用于STATIC_URL可能发生修改的情况下,造成html文件无法正常引用
"""
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>
"""
当你在写django项目的时候 可能会出现后端代码修改了但是前端页面没有变化的情况
浏览器缓存的问题
settings
network
disable cache 勾选上
"""
request对象方法初识
在django框架中,经过wsgi解析处理后,浏览器请求被包装成一个request对象,他有众多的方法,常用如下:
request.method # 返回请求方式 并且是全大写的字符串形式 <class 'str'>
request.POST # 获取用户post请求提交的普通数据不包含文件
request.POST.get() # 只获取列表最后一个元素
request.POST.getlist() # 直接将列表取出
request.GET # 获取用户提交的get请求数据
request.GET.get() # 只获取列表最后一个元素
request.GET.getlist() # 直接将列表取出
"""
get请求携带的数据是有大小限制的 大概好像只有4KB左右
而post请求则没有限制
"""