安装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
这样很好的解决了多人协作,子路由的问题
相关推荐
Adolf_199318 小时前
Django的runserver
后端·python·django
PieroPc1 天前
使用 Axios、原生 JavaScript 和 Django 5 的搭建一个简单前后端博客系统
后端·python·django
Q_19284999061 天前
基于Django的农业管理系统
后端·python·django
救救可怜孩子吧1 天前
PyCharm创建Django程序
ide·pycharm·django
互联网动态分析1 天前
Django:构建高效Web应用的强大框架
django
q567315232 天前
Django外键模型未保存引用
数据库·django·sqlite
chusheng18402 天前
基于 Python Django 的西西家居全屋定制系统(源码+部署+文档)
开发语言·python·django·家具定制系统·python 全屋家具定制系统·python 家居定制
m0_748240542 天前
基于大数据可视化+django+爬虫的李宁品牌销售数据分析系统设计和实现(源码+论文+部署讲解等)
爬虫·信息可视化·django
CCSBRIDGE2 天前
Vue的后端之一,Django
vue.js·django·sqlite
知识中的海王2 天前
【已解决】Django连接mysql报错Did you install mysqlclient?
python·mysql·django