1.安装Django
ini
pip install django (最新版本)
pip install django==3.2 (指定版本)
卸载:
pip uninstall django
markdown
C:\python3.9
- python.exe
- Scripts
- pip.exe
- django-admin.exe (工具,创建django项目自定生成文件夹和文件)
- Lib
- random
- re
- site-packages
- openpyxl
- flask
- requests
- django [内部框架源码]
2.命令行创建项目
-
打开终端
-
进入指定目录
-
执行命令
javadjango-admin startproject crm (crm 是项目名) >>>C:\python39\Script\django-admin startproject crm
-
项目目录
markdowncrm/ - manage.py [管理当前项目] - crm - settings.py [一部分项目配置] - wsgi.py - asgi.py [启动项目,接收浏览器发送的请求] - urls.py [对应关系] url -> 函数 路由
-
启动项目
python>>> 进入项目目录 >>> python manage.py runserver 或 >>> python manage.py runserver 127.0.0.1:8001
操作
- 安装django,利用系统解释器环境
- 进入想要创建项目的目录 [cmd环境]
- 执行命令创建django项目
- 编写代码
- 启动网站
3.创建项目-Pycharm
安装django
创建项目
4.创建项目-虚拟环境
创建
出现错误
错误原因:python3.9已经抛弃了某个包,可以使用命令行模式去创建。或pycharm版本过低
查看官网 python3.9 的 changelog,发现 HTMLParser.unescape 属性被移除了,并且从 python3.4 开始就被弃用。
命令行模式创建虚拟环境
bash
virtualenv 为应用提供隔离的 Python 运行环境,可以解决不同应用间多版本 python 的冲突问题
第一步:确认 python3.9 对应的 pip 工具
pip -V
第二部:安装 virtualenv。
pip install virtualenv -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
"""
尝试使用不安全连接: 您可以尝试使用不安全的 HTTP 连接而不是 HTTPS 连接来获取 virtualenv。运行以下命令
# pip install --trusted-host mirrors.cloud.tencent.com -i http://mirrors.cloud.tencent.com/pypi/simple/ virtualenv
# 注意可以使用http 而不是https
"""
第三步: 创建虚拟环境。virtualenv 指令用于创建虚拟环境,后跟虚拟环境保存路径
virtualenv E:\soft\python\python39\env
virtualenv F:\django\Venv
如果需要删除虚拟环境,直接删除对应文件夹即可。
第四步: 进入虚拟环境
cd到虚拟环境的目录的Scripts中
激活虚拟环境 activate.bat
第五步:安装包
pip instanll django
第六步:创建django项目
cd F:\django
django-admin startproject mywebsite3
第七步:
python manage.py startapp xxxx
python manage.py runserver
列出虚拟环境列表:workon
启动/切换虚拟环境:workon [虚拟环境名称]
离开虚拟环境:deactivate
5.django知识点
5.2 app概念
markdown
day15
- app01 用户的管理 [表结构、HTML模板、css、图片]
- app02 财务管理功能 [表结构、HTML模板、css、图片]
- app03 API请求处理 [表结构、HTML模板、css、图片]
- day15
- settings.py
- urls.py
- wsgi.py
- manage.py
markdown
day15
- app01 所有的功能管理 [表结构、HTML模板、css、图片]
- views.py [**视图函数,接收请求处理业务逻辑] [操作]
- models.py [**ORM,django创建数据库表结构、操作表中的数据] [操作]
- migrations
- test.py [单元测试]
- apps.py [配置]
- admin.py [django内置后台管理]
- day15
- settings.py
- urls.py
- wsgi.py
- manage.py
shell
# 创建app
>>>python manage.py startapp app01
# app01-views 中写业务逻辑
# day15/urls 下导入app01.views模块 创建path
5.3 html模板
返回一个html页面
在app01下创建 templates文件夹,再创建 home.html 页面
注册app 如下图
5.4 模板语法
帮助我们将python中的数据和HTML进行渲染 (替换),得到字符串,再返回给用户浏览器
5.5 静态资源
静态资源:图片、CSS、JavaScript
-
python
STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), )
django 会去根目录的 static去寻找
-
也会去每个已注册的app目录下的 static 寻找
推荐 放在自己的app目录下
本质:只需将app注册到配置文件中 ,那么以后程序在寻找静态资源、模板文件都会去每个app自己的目录下去寻找。
注意事项:多个app注册时,要注意顺序。 静态资源配置
login.html
5.6 请求与响应
案例用户登录
5.7 数据库操作
今天的案例使用的数据库:
django有自己的一套ORM程序,就是使用它的方式来创建数据库。
本质时转换成相应数据库的指令去创建数据库
arduino
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
5.7.1 创建表
app一定要已经注册了
bash
python manage.py makemigrations 将操作记录记录到小本本上(migrations文件夹)
python manage.py migrate
# 只有你修改了modeles.py中跟数据库相关的代码 就必须重新执行上述的两条命令
5.7.2 操作表的数据
python
from app01 import models
# 1.增加# models.Role.objects.create(title="管理员")
models.Role.objects.create(**{'title': '管理员'})
models.UserInfo.objects.create(username="root", password="qwe123", age=18)
models.UserInfo.objects.create(**{'username': 'admin', 'password': '123', 'age': 18})
# 2.删除
models.Role.objects.all().delete() # 删除所有数据
models.Role.objects.filter(id=1).delete()
models.Role.objects.filter(id=2, title='管理员').delete()
models.UserInfo.objects.filter(username='admin').delete()
# 3.修改
# 修改Role表所有数据将标题改为 'xxx'#
models.Role.objects.all().update(title='xxx')
# 修改UserInfo表将所有age字段的数据改为90
models.UserInfo.objects.all().update(age=90)
models.UserInfo.objects.filter(id=1).update(age=10086,password="1111")
# 4.查询# 获取这张表的所有数据
# QuerySet 类型 = [obj,obj] -> []
v1 = models.UserInfo.objects.all()
for obj in v1:
print(obj.id, obj.username, obj.age)# QuerySet 类型 = [obj,] -> []
v2 = models.UserInfo.objects.filter(id=1)
for obj in v2:
print(obj.id, obj.username, obj.age)# obj -> None
v3 = models.UserInfo.objects.filter(id=111).first()if v3: print("这个是v3", v3.id, v3.username, v3.age)# 选择性的查询
v4 = models.UserInfo.objects.filter(id=1).values('username', 'age')
print(v4)for obj in v4:
print(obj['username'], obj['age'])
6 跨域问题 vue 访问 django 的api
1. 打开cmd,执行命令:
pip install django-cors-headers
2.修改django项目中的setting.py,
添加两个如下图:
ini
# 1.如下图
'corsheaders',#这是我们的主角,放在新建的其他项目之前
# 添加2如下图
'corsheaders.middleware.CorsMiddleware', #注意顺序,必须放在2
# 接着添加3如下图
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
#允许所有的请求头
CORS_ALLOW_HEADERS = ('*')
7.Django 后台API 返回json数据
方法一:
python
# 导入
from django.http import JsonResponse
# 找到数据所有数据,获取到了一个queryset
data_list = models.UserInfo.objects.all()
# 只有将queryset集合进行遍历,否则不能json化
serialized_data = [{'id': item.id, 'username': item.username, 'password': item.password, 'age': item.age} for item in data_list]
# 将数据json化
return JsonResponse({'status': True,'data': serialized_data}, safe=False)
## 8.Django的子路由
如果开发多个app的情况下,且有许多人在一切往总路由添加路径,这样会很乱,
我们可以在每个app下创建urls.py,内容如下
```python
# app01
from django.urls import path
from . import views
urlpatterns = [
path('login/', views.login),
]
而在总项目文件下的urls.py,内容如下
python
from django.contrib import admin
from django.urls import path,include
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
# 这是子路由,进行了划分
path('app01/', include('app01.urls')),
]
# 路由的访问都是这样的 http://127.0.0.1:8000/app01/login
这样很好的解决了多人协作,子路由的问题