安装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
这样很好的解决了多人协作,子路由的问题
相关推荐
计算机学姐2 小时前
基于大数据的二手房价数据可视化系统
大数据·vue.js·python·信息可视化·数据挖掘·数据分析·django
计算机学姐7 小时前
基于大数据的高校新生数据可视化分析系统
大数据·vue.js·python·mysql·信息可视化·django·pip
Az_plus1 天前
Django设计批量导入Excel数据接口(包含图片)
django·sqlite·excel
春天的菠菜1 天前
【django】django项目使用https访问+ssl证书
https·django·ssl
叫我DPT2 天前
集成Elasticsearch到django restful
elasticsearch·django·restful
PieroPc2 天前
用 Django 5 快速生成一个简单 进销存 系统 添加 个打印 按钮
数据库·python·django
计算机编程-吉哥2 天前
计算机毕业设计 基于Python的音乐平台的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档
python·django·毕业设计·课程设计·毕业论文·计算机毕业设计选题·音乐平台
暮毅2 天前
二、初步编写drf API
数据库·django·sqlite·drf
@技术无疆2 天前
【Python】FeinCMS:轻量级且可扩展的Django内容管理系统
数据库·python·django·sqlite·pip·pygame·httpx
程序员的战歌3 天前
django drf 自动注册路由
python·django