1.安装django
pip install django
python
路径下的Scripts/django-admin.exe
是工具,用于创建django项目中的文件和文件夹。
而Lib/site/packages/django
是框架的源码,用时需要导入。
2.创建项目
django项目中会有一些默认的文件和文件夹。
2.1 在终端
-
打开终端
-
进入目录
D:\A_Documents\Django2022\project-folder
-
执行命令,创建项目
"C:\Users\Zhai yanbo\AppData\Local\Programs\Python\Python310\Scripts\django-admin.exe" startproject 项目名称 # 如果python路径已加入系统环境变量 django-admin startproject 项目名称
django-admin startproject mysite
创建的项目如下:
2.1 Pycharm创建
说明:
-
命令行创建的目录是标准的
-
pycharm在标准的基础上添加了一些东西
- 创建了一个templates目录(要手动删除)
- 删除
settings.py
文件中的templates
中的dir
-
默认项目的文件介绍
mysite │ manage.py [项目管理,启动项目、创建app、数据管理][无需修改][常常用] │ └─mysite asgi.py [接收网络请求][无需修改] settings.py [项目配置][常常操作] urls.py [URL和函数的对应关系][常常操作] wsgi.py [接收网络请求][无需修改] __init__.py
3.创建APP
- 项目
- app,功能1[表结构、函数、html模板、css]
- app,功能2
- app,网站
- app,API
..
初步学习的开发比较简单,没目前还用不到多app
创建app:
# 先进入 mysite 目录
python manage.py startapp app
app目录下文件介绍:
主要了解models.py
与views.py
两个文件:
4.快速上手
- 确保app已注册
- 编写URL和视图函数的对应关系
- 编写视图函数[
app/views.py
中]
-
启动django项目
-
命令行启动
python manage.py runserver
-
Pycharm启动
绿色按钮
-
4.1 再写一个页面
- url -> 函数
- 视图函数
上述配置做完后,添加函数只需再在mysite/urls.py
文件中添加url与函数的对应关系;然后在app/views.py
文件中编辑函数即可。
4.2 templates模板
在app
目录下创建templates
目录,然后在里面创建html
文件,在view文件中可以使用render
函数返回一个html文件.
def user_list(request):
return render(request,"user_list.html")
4.3 静态文件
一般将图片、js文件、css文件当作静态文件处理。
在app
目录下创建一个static
用于存放静态文件:
-static
- css
- img
- js
- plugins
4.3.1 在app目录下创建static文件夹。
4.3.2 引用静态文件
5.模板语法
本质上:在html中写一些占位符,由数据对这些占位符进行替代和转换。
案例:伪联通新闻中心
6.请求和相应
3个请求与3个响应:
def something(request):
# 1.获取请求方式:GET/POST
print(request.method)
# 2.在URL上传递值 /something/?n1=123&n2=456
print(request.GET)
# 3.在请求体中提交数据
print(request.POST)
# 4.【响应】HttpResponse("返回内容"),内容字符串返回请求者
# return HttpResponse("返回内容")
# 5.【响应】读取HTML的内容+渲染 ->字符串,返回给用户浏览器
# return render(request,'something.html',{数据...})
# 6.【响应】让浏览器重定向到其他的页面
return redirect("https://www.baidu.com")
- 重定向
案例:用户登录
Django中的form表单中记得写{% csrf_token %}
,否则会提交不成功,这是Django框架中的自带的安全手段。
7.数据库操作
-
MySQL数据库+pymysql
import pymysql # 1.连接MySQL conn = pymysql.connect(host="127.0.0.1",port=3306,user='root') passwd = "root123",cahrset="utf8",db="unicom" cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 2.发送指令 cursor.execute("insert into admin(username,password,mobile) values('wupeiqi','qwe123','1515555555')") conn.commit() # 3.关闭 cursor.close() conn.close()
-
Django开发不再使用复杂的
pymysql
,操作数据库更简单,内部提供了orm框架。
7.1 安装第三方模块
pip install mysqlclient
7.2 ORM
ORM可以帮助我们做两件事:
- 创建、修改、删除数据库中的表(不用自己写sql语句)。【无法创建数据库】
- 操作表中的数据(不用写sql语句)
1.自己创建数据库
-
启动MySQL服务
mysql -u root -p
然后输入密码
show databases
显示已创建的数据库
-
自带工具创建数据库
create database day15 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
2.Django连接数据库
在seetings.py文件中进行配置和修改。
Django中默认使用的是sqlite文件数据库,我们需要将其改为mysql数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 默认
'NAME': 'day15', # 连接的数据库
'HOST': '127.0.0.1', # mysql的ip地址
'PORT': 3306, # mysql的端口
'USER': 'root', # mysql的用户名
'PASSWORD': 'bomagic' # mysql的密码
}
}
3.django操作表
- 创建表
- 删除表
- 修改表
在models.py文件中:
from django.db import models
# Create your models here.
class UserInfo(models.Model):
name = models.CharField(max_length=32)
password = models.CharField(max_length=64)
age = models.IntegerField()
'''
上述语句相当于models执行sql语句:
create table app_UserInfo(
id bignit auto_increment primary_key,
name varchar(32),
password varchar(64),
age int
)
'''
use day15;
show tables;
发现day15
表中目前什么都没有。
执行命令:
python manage.py makemigrations
python manage.py migrate
注意:app需要提前注册,需要在项目根目录下执行该操作
use day15;
show tables;
desc app_userinfo;
在表中新增列时,由于已存在列中可能已有数据,所以新增列必须要指定默认数据:
-
1.手动输入一个值
-
2.设置默认值
age = models.IntegerField(default=2)
-
3.可以为空
data = models.IntegerField(null=True,blank=True)
以后在开发中想要对表结构进行调整,只需在model.py文件中操作类,然后再输入下面两条指令即可:
python manage.py makemigrations python manage.py migrate
4.操作表中的数据
增删改查操作:
def orm(request):
##1.增加数据##
# UserInfo.objects.create(name="张三",password="123",age=19)
# UserInfo.objects.create(name="李四",password="456",age=29)
##2.删除数据##
#UserInfo.objects.filter(name="李四").delete()
#UserInfo.objects.all().delete() #全部删除
##3.修改数据##
UserInfo.objects.filter(id=9).update(id=11)
##4.查询数据##
data_list = UserInfo.objects.all()
for item in data_list:
print(item.name,item.password,item.age)
print(UserInfo.objects.filter(id=11).first().name)
return HttpResponse("操作成功")
案例:用户管理
1.展示用户列表
- url
- 函数
- 获取所有用户信息
- HTML渲染
2.添加用户信息
- url
- 函数
- GET,看到页面,输入内容。
- POST,提交->写入到数据库。
3.删除用户
-
url
-
函数
http://127.0.0.1:8000/info/delete?nid=13
输入此url后则将nid为13的用户数据进行删除