Django是一个用Python编写的开放源代码的Web应用框架(源代码是开源的,遵守BSD版权)。采用了MVC的框架模式,也有很多人把它称为MVT(MTV)模式。
安装Django:
pip3 install django==2.2 -i http://pypi.mirrors.ustc.edu.cn/simple/
这里使用-i选项更改了安装包的下载源地址,常用的国内python源:
阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
将界面展示,业务逻辑,数据等分开在不同的部件里,方便维护和降低风险
M全拼为Model,主要封装对数据库层的访问,对数据库中的数据进行增、删、改、查操作。
V全拼为View,用于封装结果,生成页面展示的html内容。
C全拼为Controller,用于接收请求,处理业务逻辑,与Model和View交互,返回结果
django的MVT设计模式:
M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理。
V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返回应答。
T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html。
使用virtualenvwrapper完成虚拟环境搭建
sudo pip install virtualenvwrapper -i https://pypi.mirrors.ustc.edu.cn/simple/
1.手动创建虚拟环境目录: mkdir ~/.virtualenvs
2.使用vim打开⽂件(或者使用linux自带的cat)vim ~/.bashrc
在文件末尾添加:
export WORKON_HOME=$HOME/.virtualenvs # 所有虚拟环境存储的⽬录 export
VIRTUALENVWRAPPER_PYTHON=/usr/local/python36/bin/python
指定python解释器,这里后面的地址需要填写linux上python解释器位置的绝对路径
source /usr/local/bin/virtualenvwrapper.sh
#执⾏virtualenvwrapper
安装脚本
#让配置⽂件其⽣效
source ~/.bashrc
命令 | 功能 |
---|---|
mkvirtualenv 虚拟环境名 -p /usr/bin/python3.8(指定python解释器路径) | 创建虚拟环境 |
rmvirtualenv 虚拟环境名 | 删除虚拟环境 |
workon 虚拟环境名 | 进入虚拟环境 |
deactivate | 退出虚拟环境 |
快速导出/导入虚拟环境所需依赖:
将虚拟环境中用到的第三方包名写入到requerements.txt文件中 | pip freeze > requirements.txt |
安装requerements.txt文件中记录的第三方包 | pip install -r requirements.txt |
指定pip命令为一个超链接 指向pip3,即使用之后调用pip命令时会默认调用pip3命令 | sudo ln -s pip3 pip |
使用django命令创建项目
命令行:
django-admin startproject 项目名
pycharm:
file-->new project-->django-->输入项目目录-->选择解释器-->create创建
django项目配置文件:settings.py
使用django命令创建应用
python manage.py startapp 应用名
django创建项目流程
使用虚拟环境
workon xxx
创建django项目:
django-admin startproject xxx
创建django应用:
python manage.py startapp xxx
若使用pycharm打开项目 则继续配置django项目运行所需的虚拟环境:
在file - settings - project - Python Interpreter - show all interpreter - 选择已经配置过的解释器
新建文件夹:
模板文件夹:template
静态资源文件夹:static
在Django项目中的__init__ 文件中添加:pymysql.install_as_MySQLdb()
在右侧database中添加数据库对应连接配置
连接数据库之后执行迁移:
python manage.py migrate
项目创建之后,需要配置django的settings文件:
应用配置:
在django项目中的urls文件中添加:
re_path('应用路径',include('应用名.urls')
在APP下创建python文件urls.py
添加:
app_name = '应用路径别名'
urlpatterns = [re_path('路径名/', views.视图函数名, name='路径别名') ,]
在settings中添加/修改相关配置
ALLOWED_HOSTS = ['*']
INSTALLED_APPS里添加创建的app/若需要使用rest_framework则需要添加rest_framework
MIDDLEWARE里添加创建的中间件
TEMPLATES-'DIRS': [os.path.join(BASE_DIR, 'templates')],
DATABASES里添加数据库的'NAME','USER','PASSWORD','HOST','PORT'
LANGUAGE_CODE = 'zh-hans' 语言编码
TIME_ZONE = 'Asia/Shanghai' 时区
USE_TZ = False
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),]静态文件路径
FONT_PATH = os.path.join(BASE_DIR, 'static/font/...')字体文件位置
MEDIA_ROOT = os.path.join(BASE_DIR, '文件存放路径')"
# rest_frame相关配置
REST_FRAMEWORK = {
# Use Django's standard `django.contrib.auth` permissions,
# or allow read-only access for unauthenticated users.
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.AllowAny'
]
}
在django中实现一个请求的步骤
从浏览器开始,到django中的url,到视图函数view,通过view操作model,再将操作的结果通过view返回response
Browser-urls-views-models-views-response
urls:
按照列表的书写顺序进行匹配的
从上到下匹配,没有最优匹配的概念
路由规则编写
通常指定直接指定以^开头
在结尾处直接添加反斜线/
若要在第一个参数路径中使用正则匹配,则需要使用re_path方法: re_path(r’正则规则’)
路由路径中的参数使用()进行获取
一对小括号对应视图参数中的一个参数
路径中的参数:
位置参数
按照书写顺序进行匹配
关键字参数
按照参数名称匹配,和顺序无关
参数个数和视图函数中参数个数需一致(除默认的request外)
urlpatterns = [
path('hello', views.hello)
re_path(r'hello', views.hello)
]