创建Django项⽬
❖ django-admin startproject apitest
❖
标题
运⾏Django
项⽬根⽬录输⼊下⾯的命令:
python manage.py runserver
可更换端⼜:
【python manage.py runserver 5000】
在浏览器中输⼊http://127.0.0.1:8000就可以访问我们的⽹
站:
关闭服务:ctrl+c
标题
⼀、创建第⼀个项⽬
1、发请求,经路由urls.pys
2、views.py回响应
标题
访问的⽹站的流程
Django 是怎么处理请求的?
❖ 1、Django 通过 settings.py ⽂件中 ROOT_URLCONF 配置来决定根 URLconf
❖
❖ 2、Django 在 URLconf 中的所有 URL 模式中,查找匹配条⽬,urls.py
❖ 3、如果找到匹配,那么将调⽤相应的视图函数views.py
❖ 4、视图函数返回⼀个 HttpResponse
❖ 5、Django 转换 HttpResponse 为⼀个合适的 HTTP response,以⽹页显⽰出
来
第⼀步:创建APP的⾻架并申明
❖ 创建⼀个名叫blog的应⽤:
❖ 输⼊命令:python manage.py startapp blog
❖ blog #应⽤⽬录
❖ │ admin.py #对应应⽤后台管理配置⽂件。
❖ │ apps.py #对应应⽤的配置⽂件。
❖ │ models.py #数据模块,数据库设计就在此⽂件中设计。后⾯重点讲解
❖ │ tests.py #⾃动化测试模块,可在⾥⾯编写测试脚本⾃动化测试
❖ │ views.py #视图⽂件,⽤来执⾏响应代码的。你在浏览器所见所得都是它处理的。
❖ ├─migrations #数据迁移、移植⽂⽬录,记录数据库操作记录,内容⾃动⽣成。
❖ 我们需要在项⽬⽬录下的mysite⽂件夹下的settings.py配置⽂件⾥的INSTALLED_APPS选项⾥
注册应⽤。申明blog这个⽂件夹是⼀个APP应⽤。
第⼆步:改到中国世界
❖ Mysite⽬录下的settings.py配置⽂件,我们需要把语⾔设置为中⽂和时区修改
为中国时区。
❖ mysite/mysite/settings.py
❖ # 把语⾔改为中⽂
❖ # LANGUAGE_CODE = 'en-us'
❖ LANGUAGE_CODE = 'zh-hans'
❖ # 把国际时区改为中国时区
❖ # TIME_ZONE = 'UTC'
❖ TIME_ZONE = 'Asia/Shanghai'
第三步:建⽴对外沟通的界⾯。
❖ 1、建⽴在界⾯要展⽰的东西
❖ mysite/blog/views.py
❖ from django.http import HttpResponse
❖ def hello(request):
❖ return HttpResponse(‘Hello,world')
❖
每个视图函数的第⼀个默认参数都必需是request, 它是⼀个全
局变量。Django把每个⽤户请求封装成了request对象,它包
含⾥当前请求的所有信息,⽐如请求路径request.path, 当前⽤
户request.user以及⽤户通过POST提交的数据request.POST。
2、建⽴地址访问的桥梁路由映射。
mysite/mysite/urls.py
from django.contrib import admin
from django.urls import path
from blog import views #+
urlpatterns = [
path('admin/', admin.site.urls),
path('index', views.hello), #+
]
验证修改的前端界⾯
启动项⽬
python manage.py runserver
标题
⼆、添加模板及静态⽂
件,使⽤⼆级路由
根路由指向⼆级路由
添加模板、配置模板
html⽂件、css样式表
1、配置根路由和⼆级路由
❖ 1、在最外⾯的urls.py的路由是根路由
❖ From django.contrib import admin
❖ from django.urls import path,include
❖ urlpatterns = [
❖ path('admin/', admin.site.urls),
❖ path('', include('blog.urls')),
❖ ]
❖ 2、在每个app应⽤新建⼀个同名的urls.py是这个应⽤的⼆级路由
❖ Blog/urls.py
❖ from django.urls import path
❖ from . import views
❖ urlpatterns = [
❖ path('', views.home),
❖ ]
1.1增加⼀个模块和路由
❖ Views.py
❖ Def abcdef(request): +
❖ Return HttpResponse(‘iloveyou’) +
❖ Blog/urls.py
❖ from django.urls import path
❖ from . import views
❖ urlpatterns = [
❖ path('', views.home),
❖ path('love', views.abcdef), +
❖ ]
2、Templates的应⽤
1. 设置模板的位置:settings中TEMPLATES->’DIRS’:
cos.path.join(BASE_DIR, 'base/templates')
2. 建⽴模板(例如:demo.html)
在blog下⾯建⽴⽂件夹templates,在其下⾯建⽴demo.html⽂件
3. 使⽤模板(urls加路由,view中的对应)
render(request, ‘demo.html')
2.1建⽴模板:Demo.html
❖ <!DOCTYPE html>
❖ <html lang="en">
❖ <head>
❖ <meta charset="UTF-8">
❖ <title>demo样式</title>
❖ </head>
❖ <body>
❖ <p>
❖ <h2> 这是我的简书的地址 </h2>
❖ <a href="https://www.jianshu.com/u/030c07091ea4" target="_blank" >测试星云</a>
❖ <h4>测试相关技术探讨</h4>
❖ </p>
❖ </body>
❖ </html>
2.2可以添加静态⽂件-样式表
❖ 1、在templates同级建⽴⼀个static⽂件夹
❖ 2、在settings.py中最下⾯添加
❖ STATICFILES_DIRS=[
❖ os.path.join(BASE_DIR,’static’)
❖ ]
❖ 3、在static下⾯建⽴⼀个1.css样式表,写点样式。
❖ H1{
❖ Color:#369
❖ }
❖ 4、在demo.html⽂件中head下⾯加⼊
❖ <link rel=“stylesheet” href=“/static/1.css”>
2.3可使⽤bootstrap写好的css样式变好看
❖ https://getbootstrap.com/
❖ https://getbootstrap.com/docs/5.1/examples/
❖ https://getbootstrap.com/docs/5.1/examples/headers/
❖ head中加上css(也可使⽤下载到本地的)
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
❖ 将源代码复制到html中。可直接使⽤。
开发模式
MVC与MTV
标题
三、使⽤ORM⽅式建⽴操
作数据表
将数据保存到数据库中
model模型第⼀步:设计模型
❖ 完成博客,我们需要存储三种数据。⽂章分类、⽂章、⽂章标签。
❖ 1、分类表结构设计:
❖ 表名:Category、分类名:name (科技,教学,游戏,动漫)
❖ 2、标签表设计:
❖ 表名:Tags、标签名:name (俄乌局势,360报告)
❖ 3、⽂章表结构设计:
❖ 表名:Article、标题:title、摘要:intro、分类:category、标签:tags、内容:
body、创建时间:created_time、作者:author
❖ 其中:
❖ 分类和⽂章是⼀对多的关系,标签和⽂章是多对多的关系,作者和⽂章是⼀对多的关系。
ORM与DB-django使⽤ORM⽅式建⽴操作数据表
ORM (Object Relational Mapping )把类映射成数据库中
的表,把类的⼀个实例对象映射成数据库中的数据⾏,把类
的属性映射成表中的字段,通过对象的操作对应到数据库表
的操作,实现了对象到 SQL、SQL 到对象转换过程。
模型第⼆步1:创建模型 blog/models.py
❖ from django.db import models
❖ class Category(models.Model):
❖ name = models.CharField(verbose_name='分类', max_length=100)
❖ class Tags(models.Model):
❖ name = models.CharField('标签', max_length=100)
❖ class Article(models.Model):
❖ title = models.CharField('⽂章标题',max_length=70)
❖ intro = models.TextField('⽂章内容', max_length=200, blank=True)
❖ created_time = models.DateTimeField(‘发布时
间',auto_now_add=True)
普通字段及字段参数详解
❖ 常⽤字段
❖ CharField 字符串类型 :必须设置参数-字符串长度
❖ TextField 长⽂本类型 :对应的form标签是textarea
❖ DateTimeField 时间类型
❖ 字段内参数
❖ verbose_name: 界⾯上的显⽰名称
❖ max_length设置这个字段的最⼤长度
❖ blank=True 界⾯可以为空
❖ auto_now_add=True:当该对象第⼀次被创建是⾃动设置该字段为现在⽇期,创建⽇期
❖ default=‘1' 默认值为1
模型第⼆步2:创建模型 blog/models.py-关联
❖ from django.db import models
❖ from django.contrib.auth.models import User
❖ ……
❖ class Article(models.Model):
❖ category = models.ForeignKey(Category, on_delete=models.CASCADE, ve
rbose_name='分类', default='1')
❖ tags = models.ManyToManyField(Tags, blank=True)
❖ user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_na
me='作者')
表关联
❖ 表关联三种:OneToOneField,ForeignKey,
ManyToMany
❖ ⼀个分类有多个⽂章—ForeignKey:⼀对多
❖ ⼀个⽂章有多个标签,⼀个标签有多个⽂章:
ManyToMany
❖ ⼀个对应⼀个是:OneToOneField
多表关联-关联字段及参数
1. ForeignKey(othermodel, on_delete, **options) 多对⼀或者⼀对多或者外键字
段。
on_delete: 当删除 "⼀" 模型对象时,django会根据该参数的值对与该对象相关
联的其他对象(也就是 ‘多’)进⾏操作。on_delete=models.CASCADE 级联删除。
当删除’⼀'时,‘多’会被删除。
2. ManyToManyField(othermodel, **options) 多对多字段。
othermodel: 所关联的model名称
3. OneToOneField(othermodel, on_delete, parent_link=False, **options) ⼀对
⼀字段。
字段及字段参数