Django
SQLite
- 轻量级的嵌入式级的数据库
- 特点是小
- 常用场景
- Android.IOS
- 数据库常规操作相似度和MySQL达95%
快捷键
python manage.py makemigrations 迁移
Alt+Enter 快速导包
ctrl+p 参数提示
ctrl+d 复制一行,插入到下面
alt+shift+↑↓ 移动一行
实现一个请求
- 注册一个路由
- urls中
- url
- 参数1 匹配规则 正则
- 视图函数
- 对应的是views中等一个函数
- 没有括号
- 对应的是views中等一个函数
- url
- urls中
- 去views实现对应的视图函数
- 第一的参数是request
- 永远记得返回Response
html
-ul>li
-ul * 5
再按下
快捷Tab
模版配置
- 两种
- 在App中进行模版配置
- 只需在App的根目录中创建templates文件夹即可
- 如果向让代码自动提示,我们应该标记文件夹为模版文件夹
- 在项目目录中进行模版配置
- 需要在项目目录中创建templates文件夹并标记
- 需要在settings中进行注册
- 在开发中使用第二种
- 模版可以继承、复用
- 在App中进行模版配置
路由优化配置
- 项目如果逻辑过于复杂,可以进行拆分
- 拆分为多个App
- 继续拆分路由器 urls
- 在App中创建自己的urls
- urlpatterns路由规则列表
- 在根urls中进行子路由的包含
- 子路由的使用
- 根路由规则 + 子路由规则
- 在App中创建自己的urls
models 使用了ORM技术
-
Object Relatoion Mapping 对象关系映射
-
将业务逻辑进行了一个解耦合
- object.save()
- object.delete()
-
关系型数据库
- DDL 定义数据库
- Django 通过models定义实现,数据库表的定义
-
数据操作
- 增删改查
- 存储
- save()
- 查询
- 查所有 objects.all()
- 查单个 objects.get(pk=XX)
- 更新
- 基于查询的
- 查好的对象,修改属性,然后save()
- 删除
- 基于查询的
- 调用 delete()
连接mysql驱动
-
mysqlclient
- 优点:python2,3都能直接使用
- 致命弱点
- 对mysql安装有需求,必须指定位置存在配置文件
-
python-mysql
- 优点:python2支持很好
- 缺点:python3不支持
-
pymysql
- 优点:python2,3都支持
- 还可以伪装成前面两种库
换源
pip install pymysql -i https://pypi.douban.com/simple
测试服务器的启动
python manage.py runserver [ip:port]
可以直接进行服务器运行 默认执行起来的端口是8000
也可以自己指定ip和端口
ip指定为0.0.0.0的时候,匹配本机的全部ip
浏览器访问 localhost:8000可以看到服务器启动成功
迁移数据,pyCharm连接数据库
迁移的概念:就是将模型映射到数据库的过程
生成迁移文件:python manage.py makemigrations
执行迁移:python manage.py migrate
介绍DataBase模块,可以直接连接操作数据库Sqlite和MySQL
- 连接MySQL
- 修改settings
‘ENGINE’: ‘django.db.backends.mysql’,
‘NAME’: ‘mydjango’, # 数据库名
‘USER’: ‘root’, # 用户名
‘PASSWORD’: ‘123456’, # 密码
‘HOST’: ‘127.0.0.1’, # ip地址
‘PORT’: ‘3306’, # 端口号 - 进入MySQL中创建learn库
- mysql -uroot -p123456
- create database mydjango charset=utf8;
看到Query OK, 1 row affected (0.02 sec)说明成功
- 在pyCharm中连接MySQL
右边Database中点击加号,选择Data Source中的MySQL填好相应信息进行测试,
如果是第一次测试需要点击下方叹号旁边的Download下载相应驱动
此时数据库中暂无任何数据 - 安装驱动 pip install pymysql
- 把驱动伪装
在__init__.py中
import pymysql
pymysql.install_as_MySQLdb() - 第一次时需要执行python manage.py makemigrations生成迁移文件
- 执行python manage.py migrate 执行迁移
- 修改settings
创建应用
- 使用python manage.py startapp xxx
创建名为XXX的应用 - 使用应用前需要将应用配置到项目中,在settings.py中将应用加入到settings的INSTALLED_APPS选项中
项目目录介绍
init.py:其中暂无内容,使得app成为一个包
admin.py:管理站点模型的声明文件,默认为空
apps.py:应用信息定义文件,在其中生成了AppConfig,该类用于定义应用名等信息
modles.py:添加模型层数据类文件
views.py:定义URL相应函数(路由规则)
migrations包:自动生成,生成迁移文件的
tests.py:测试代码文件
基本试图
首先我们在views.py中建立一个路由响应函数
from django.http import HttpResponse
def welcome(request):
return HttpResponse(“HelloDjango”)
接着我们在urls中进行注册
from django.conf.urls import url
from App import views
urlpatterns = [
url(r’addstudent/’, views.add_student),
url(r’getstudents/’, views.get_students),
url(r’updatestudents/’, views.update_students),
url(r’deletestudents/’, views.delete_students),
]
基于模块化的设计,我们通常会在每个app中定义自己的urls
在项目的urls中将app的urls包含进来
from django.contrib import admin
from django.urls import path, include
from App import views
urlpatterns = (
path(r’admin/’, admin.site.urls),
path(r’hello/’, views.hello),
path(r’index/’, views.index),
path(r’home/’, views.home),
path(r’App/’, include(‘App.urls’)),
)
基本模版
模版实际上就是我们用HTML写好的页面
创建模版文件夹,两种,在工程目录的需要注册settings中的TEMPLATES中添加
‘DIRS’: [
os.path.join(BASE_DIR, ‘templates’),
],
在模版文件夹中创建模版文件
在views中去加载渲染模版
1.from django.template import loader
template = loader.get_template(‘xxx’)
return HttpResponse(template.render())
2.return render(request,‘xxx’)
django shell
- 集成了python环境的shell终端
- 通常在终端中做一些调试工作