Django学习笔记(一)
MVT流程
一、pycharm创建django项目
- settings.py 是项目的整体配置文件
- urls.py 是项目的URL配置文件
- wsgi.py 是项目与WSGI兼容的Web服务器入口
- manage.py 是项目管理文件,通过它管理项目
- 在终端启动django项目,默认8000端口:
(bookmanage) [root@localhost bookmanage]# python3 manage.py runserver
- 指定端口号:
python3 manage.py runserver 127.0.0.1:8001
- 查看帮助信息:
[root@localhost bookmanage]# python3 manage.py --help
- 启动后的状态:
- 页面:
二、创建子应用
- 创建登录子应用
# 创建一个login子应用
python3 manage.py startapp login
- admin.py文件跟网站的后台管理站点配置相关
- apps.py文件用于配置当前子应用的相关信息
- migrations.py目录用于存放数据库迁移历史文件
- models.py文件用户保存数据库模型类
- tests.py文件用于开发测试用例,编写单元测试
- views.py文件用于编写Web应用视图
- 注册/安装子应用,在settings.py文件中添加子应用
# Application definition
# 安装/注册子应用
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'book.apps.BookConfig', # 'book'
'login.apps.LoginConfig', # 'login'
'pay.apps.PayConfig' # 'pay'
]
三、模型的迁移
(1)使用Django进行数据库开发的提示:
- MVT设计模式中的Model,专门负责和数据库交互,对应models.py
- 由于model中内嵌了ORM框架,所以不需要直接面向数据库编程
- 而是定义模型类,通过模型类和对象完成数据库表的增删改查
- ORM框架就是把数据库表的行与相应的对象建立关联,互相转换,使得数据库的操作面向对象
使用Django进行数据库开发的步骤:
- 定义模型类
- 模型迁移
- 操作数据库
- 以下是models.py代码
from django.db import models
# Create your models here.
'''
1. 定义模型类
2. 模型迁移
2.1 先生成迁移文件(不会在数据库中生成表,只会创建一个数据表和模型的对应关系)
python3 manage.py makemigrations
2.2 再迁移(会在数据库中生成表)
python3 manage.py migrate
3. 操作数据库
注:
知道在哪里定义模型
模型继承自哪里
ORM对应的关系
表--->类 字段--->属性
'''
class BookInfo(models.Model):
'''
1.主键 当前会自动生成
2。属性复制过来就可以
'''
# 定义name属性
name = models.CharField(max_length=10)
class PeopleInfo(models.Model):
# 姓名
name = models.CharField(max_length=10)
# 性别
gender = models.BooleanField()
# 外健
book = models.ForeignKey(BookInfo,on_delete=models.CASCADE)
生成迁移文件
python3 manage.py makemigrations
生成成功:
迁移:在数据库中生成表
python3 manage.py migrate
在settings.py文件可知道默认的数据库时SQlite3
需要安装sqlite驱动
四、admin站点管理
django自带管理后台 网址是127.0.0.1:8000/admin
将英文改成中文,时区改成上海:
(1)创建后台管理用户
admin 123456abc
(2)登录成功
(3)子应用注册模型-子应用中的admin.py
from django.contrib import admin
from book.models import BookInfo
# Register your models here.
# 注册模型
# admin.site.register(模型类)
admin.site.register(BookInfo)
页面展示,点击【增加】添加内容
返回并显示属性
添加了一本书后,去数据库查看
五、视图的定义
views.py
from django.shortcuts import render
from django.http import HttpRequest,HttpResponse
# Create your views here.
'''
视图
1.视图就是python函数
2.函数的第一个参数就是请求,它是HttpRequest的实例对象
3.必须返回一个响应,响应是HttpResponse的实例对象/子类实例对象
'''
def index(request):
return HttpResponse('index')
六、url匹配
主程序中的urls.py
'''
1.urlpatterns是列表格式,固定写法
2.在浏览器中输入的路径会和urlpatterns中的每一项顺序匹配
如果匹配成功,则直接引导到相应的模块
如果匹配不成功(将所有模块中的urlpatterns中的值都匹配過了)則,返回404
3.urlpatterns中的元素是url
url的第一个参数是正则
4.浏览器中输入的路由,哪些部分参与正则匹配?
http://ip:port/path/?key=value
其中http://ip:port/和get post参数?key=value不参与正则匹配
5.如果和当前的urlpatterns某一项匹配成功,则引导到子应用的urlpatterns中继续匹配
如果匹配成功,则停止匹配相应的视图
如果匹配不成功,则继续和其他工程中的url文件中的urlpatterns进行匹配
'''
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
# 添加一项,只要不是admin/,都引导到book子应用
path('', include('book.urls')),
]
book子应用中新建一个urls.py,将视图中定义的函数名称传入
from django.urls import path, include
from book.views import index
urlpatterns = [
path('index/',index),
]
运行结果
七、模板
(1) 创建模板文件
(2)工程文件中的settings.py中配置模板文件路径
(3)模板接收视图传入的数据
from django.shortcuts import render
from django.http import HttpRequest,HttpResponse
# Create your views here.
'''
def index(request):
# 参数1 当前的请求
# 参数2 模板文件
return render(request,'index.html')
# return HttpResponse('index')
(4)模板处理数据
views.py添加变量
from django.shortcuts import render
from django.http import HttpRequest,HttpResponse
def index(request):
# 参数1 当前的请求
# 参数2 模板文件
# 参数3 context 传递参数
name = '派大星'
context = {
'name': name
}
return render(request,'index.html',context = context)
# return HttpResponse('index')
index.html引用变量
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>hello</title>
</head>
<body>
<a href="#"> {{ name }} hello </a>
</body>
</html>