安装Django 及项目使用

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.命令行创建项目

  • 打开终端

  • 进入指定目录

  • 执行命令

    java 复制代码
    django-admin startproject crm 	(crm 是项目名)
    >>>C:\python39\Script\django-admin startproject crm
  • 项目目录

    markdown 复制代码
    crm/
    	- 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

  • settings.py

    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程序,就是使用它的方式来创建数据库。

本质时转换成相应数据库的指令去创建数据库

settings.py

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
这样很好的解决了多人协作,子路由的问题
相关推荐
2401_868534781 天前
OSPF经典案例分析
python·django
不瘦80斤不改名1 天前
全家桶、乐高积木与类型引擎:重新认识 Django、Flask 与 FastAPI
django·flask·fastapi
hanxiuchao5 天前
告别客户端臃肿!网页端 M3U8 播放调试方案,适配全办公场景
运维·python·django·m3u8·m3u8播放
程序员羽痕5 天前
基于深度学习的眼疾识别系统
人工智能·pytorch·深度学习·分类·django
流云鹤6 天前
1. 配置环境、创建导航栏
python·django
流云鹤6 天前
2.登录模块
python·django
流云鹤6 天前
专题栏说明
python·django
XGeFei7 天前
【Django学习笔记】—— Django 高并发通俗讲解
笔记·学习·django
weixin_BYSJ19877 天前
springboot美食食谱小程序---附源码24044
java·spring boot·python·spring cloud·django·tomcat·php
许彰午8 天前
87_Python Django模型与数据库
数据库·python·django