初识Djiango
1. 安装djiango
pip install django==4.1 -i https://mirrors.aliyun.com/pypi/simple/
C:\python38
- python.exe
- Scripts
- pip.exe
- djiango-admin.exe 【工具,创建djiango项目】
- Lib
- 内置模块
- site-packages
- openpyxl
- python-docx
- flask
- djiango 【框架的源码】
2.创建项目
djiango中项目会有一些默认的文件和默认文件夹
2.1 在终端
- 打开终端
- 进入某个目录(项目放在哪里)
D:\PycharmDjiango
- 执行命令创建项目
"C:\Users\lq\AppData\Local\Programs\Python\Python38\Scripts\djiango-admin.exe" startproject 项目名称
如果 C:\Users\lq\AppData\Local\Programs\Python\Python38\Scripts 已加入环境变量。
djiango-admin startproject 项目名称
2.2 Pycharm
说明:
- 命令行,创建的项目是标准的。
- pycharm,在标准的基础上默认加了一些东西。
- 创建了一个templates目录(删除)
- settings.py中多出的对应路径
默认项目文件的介绍:
mysite
manage.py 【项目的管理,启动项目、创建app、数据管理】【常用】
asgi.py 【接收网络请求】 【不要动】
wsgi.py 【接收网络请求】 【不要动】
urls.py 【URL和函数的对应关系】 【常操作】
setting.py 【项目配置】 【连接数据库...】 【常操作】
3.APP
- 项目
- app, 用户管理
- app, 订单管理
- app, 后台管理
- app, 网站
- app, API
...
app01
- apps.py 【固定,不用动】app启动类
migrations 【固定,不用动】数据库变更纪录
tests.py 【固定,不用动】单元测试
admin.py 【固定,不用动】djiango默认提供一个admin后台管理功能
views.py 【重要】函数
models.py 【重要】对数据库操作
4.快速上手
- app注册【setting.py】
- 编写URL和视图函数对应关系【urls.py】
- 编写视图函数【views】
-
启动djiango项目
- 命令行启动
python manage.py runserver
- Pycharm启动
4.1 添加页面
- url -> 函数
4.2 templates模板
4.3 静态文件
在开发过程中一般将:
- 图片
- CSS
- js
当做静态文件处理
4.3.1 static目录
在app目录下创建static
4.3.2 引用静态文件
5.模板语法
案例:新闻中心
1.创建url和视图对应关系
2.编写视图函数
3.使用模板显示数据
6.请求和响应
渲染:
- 字符串
- 列表
- 字典
- 列表套字典
- 爬虫
案例:用户登录
7.数据库操作
利用ORM框架,不用进行SQL语句编写,使用ORM语法执行后可以自动生成SQL语句传给数据库。
7.1 安装模块
pip install mysqlclient
7.2 ORM
ORM可以帮助我们做两件事:
- 创建、修改、删除数据库的表【无法创建数据库】
- 操作表中的数据
1.创建自己的数据库
- 启动MySQL服务
net start mysql57
- 利用自带工具创建数据库
create database 数据库名字 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
2. djiango连接数据库
在settings.py中进行配置修改
ENGINE:数据库类型
NAME:数据库名称
USER:用户名
PASSWORD:abc123.
HOST:连接的主机地址
PORT:连接的主机端口
3. djiango操作表
- 创建表
- 删除表
- 修改表
创建表:在models.py文件中
from django.db import models
class UserInfo(models.Model):
name = models.CharField(max_length=32)
password = models.CharField(max_length=64)
age = models.IntegerField
执行命令:
python manage.py makemigrations
python manage.py migrate
注意:app需要提前注册。
在表中新增列时,由于表中已有数据,所以在新增列时需要指定列的值
- 固定值
age = models.IntegerField(default=2)
- 允许为空
data = models.IntegerField(null=True, blank=True)
ORM增删改查:
def orm(request):
# 1.增加数据
# UserInfo.objects.create(name="刘备")
# UserInfo.objects.create(name="关羽")
# UserInfo.objects.create(name="张飞")
# 2.删除数据
# UserInfo.objects.filter(id=3).delete()
# 3.查看数据,获取数据 获取的数据为对象形式
# data_list = UserInfo.objects.all()
# for obj in data_list:
# print(obj.name, obj.password, obj.age)
# 4.更新数据
# UserInfo.objects.filter(id=1).update(password=999)
案例:用户管理
1. 展示用户列表
- url
- 函数
- 获取所有用户信息
- HTML渲染
def info_list(request):
data_list = UserInfo.objects.all()
return render(request, "info_list.html", {"data_list": data_list})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="/info_add">添加</a>
<table border="1">
<thead>
<tr>
<th>ID</th>
<th>姓名</th>
<th>密码</th>
<th>年龄</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for obj in data_list %}
<tr>
<th>{{ obj.id }}</th>
<th>{{ obj.name }}</th>
<th>{{ obj.password }}</th>
<th>{{ obj.age }}</th>
<th>
<a href="/info_delete/?uid={{ obj.id }}">删除</a>
</th>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>
2. 添加用户
- url
- 函数
- GET,看到页面,输入内容。
- POST,提交->写入到数据库。
def info_add(request):
if request.method == 'GET':
return render(request, "info_add.html")
user = request.POST.get("user")
pwd = request.POST.get("pwd")
age = request.POST.get("age")
UserInfo.objects.create(name=user, password=pwd, age=age)
return redirect("/info_list")
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>添加用户</h1>
<form method="post">
{% csrf_token %}
<input type="text" name="user" placeholder="用户名">
<input type="text" name="pwd" placeholder="密码">
<input type="text" name="age" placeholder="年龄">
<input type="submit" value="提 交">
</form>
</body>
</html>
3. 删除用户
- url
- 函数
- GET,传入id删除
def info_delete(request):
uid = request.GET.get("uid")
UserInfo.objects.filter(id=uid).delete()
return redirect("/info_list")