Django
Shell相关
创建项目
1 | django-admin startproject mysite |
运行服务器
1 | python manage.py runserver |
创建一个新的应用
1 | python manage.py startapp myapp |
应用结构:
_ _ init _ _
views:视图函数
models:模型
admin:后台管理
apps:应用配置
tests:单元测试
migrations:迁移目录
数据库迁移
1 | python manage.py migrate |
通过models.py生成migrations中的文件
1 | python manage.py makemigrations myapp |
使用后,一般再执行一遍数据库迁移命令
实现请求与响应
1. 在myapp/models.py下创建模型
1 | from django.db import models |
2. 在myapp/views.py下编写视图
- 视图函数中,第一个参数是request
- 永远记得返回Response
1 | from django.http import HttpResponse |
3. 修改mysite/settings.py,激活模型
1 | INSTALLED_APPS = [ |
4. 如果需要使用模型,使用shell进行数据库迁移
5. 配置url
5.1 如果是需要综合配置的,则在mysite/urls.py中配置即可
1 | from django.contrib import admin |
5.2 如果是复杂的,则可在mysite/urls.py中配置对应的url文件
mysite/urls.py
1
2
3
4
5
6
7from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('myapp/', include('myapp.urls')),
path('admin/', admin.site.urls),
]myapp/urls.py
1
2
3
4
5
6
7from django.urls import path
from . import views
app_name = 'polls'
urlpatterns = [
path('', views.index, name='index'),
]
对视图返回值进行改良
1. 直接返回HTML内容
1 | from django.http import HttpResponse |
2. 使用template模板
2.1 新建myapp/templates/myapp/index.html
1 |
|
2.2 修改myapp/views.py
1 | from django.shortcuts import render |
3. 使用template模板并传值
3.1 修改myapp/views.py
1 | from django.http import HttpResponse |
可简写
1 | from django.shortcuts import render |
3.2 修改myapp/templates/myapp/index.html,使用传入的值
1 |
|
Model的数据操作
CRUD(在myapp/views.py中)
1. 增加
1 | def add_user(request): |
2. 删除
1 | def del_user(request): |
3. 修改
1 | def mod_user(request): |
4. 查找
1 | # 查找全部 |
5. 过滤查找
1 | users = User.objects.filter(age__gt=10).filter(age__lt=30) |
6. 使用聚合函数
1 | User.objects.aggregate(Max('age')) |
更换数据库为MySQL
1. 新建mysql数据库
2. 修改mysite/settings.py
1 | DATABASES = { |
3. 安装MySQL驱动
- mysqlclient
- python2、python3都能直接使用
- 缺点:对mysql安装位置有要求,必须指定位置存在配置文件
- python-mysql
- python2 支持好,但不支持python3
- pymysql
- python2、python3都支持
- 可伪装成前两个库
安装
1
pip install pymysql
伪装, 写在mysite/_ _ init _ _.py中
1
2
3
4import pymysql
# 指定版本
pymysql.version_info = (1, 4, 13, "final", 0)
pymysql.install_as_MySQLdb()数据库迁移
python manage.py migrate