2022-06-05

创建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) ⼀对

⼀字段。

字段及字段参数


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,039评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,426评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,417评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,868评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,892评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,692评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,416评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,326评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,782评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,957评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,102评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,790评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,442评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,996评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,113评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,332评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,044评论 2 355

推荐阅读更多精彩内容