笔记11:Django入门

栏目: Python · 发布时间: 4年前

内容简介:摘要:日常学习中对一些知识点进行总结得出该系列文章。学习笔记内容包括前端技术,Django web开发技术,数据库技术如MySQL,MongoDB,PGSQL等等。此外还有一些工具如Dock,ES等等。(本文原创,转载必须注明出处.)MVC的核心思想就是解耦。

摘要:日常学习中对一些知识点进行总结得出该系列文章。学习笔记内容包括前端技术,Django web开发技术,数据库技术如MySQL,MongoDB,PGSQL等等。此外还有一些 工具 如Dock,ES等等。(本文原创,转载必须注明出处.)

MVC的核心思想就是解耦。

笔记11:Django入门

MVT

Django遵循MVC思想,其称为MVT。其中:

  • M: Model模型:和MVC中的M相同和数据库交互
  • V:View视图,和MVC中的C相同,接收请求并处理,与M和T交互,返回应答
  • T:Template模板,和MVC中的V功能相同,产生HTML

笔记11:Django入门

解决 python 安装包依赖问题

笔记11:Django入门

在虚拟环境里面配置,减少依赖。

Django项目创建

笔记11:Django入门

  • 项目结构

笔记11:Django入门

  • 创建应用 C:\Users\admin\Desktop\bncDome\test1>django-admin startapp booktest

笔记11:Django入门

笔记11:Django入门

  • 启动服务器

笔记11:Django入门

  • 添加app

笔记11:Django入门

ORM框架

笔记11:Django入门

ORM模型类生产表

  • 1 设计testbook app中的model.py

笔记11:Django入门

  • 2 生成迁移文件

笔记11:Django入门

笔记11:Django入门

  • 3 执行迁移生成表

笔记11:Django入门

笔记11:Django入门

sqlite3是一个小型数据库,经常使用在手机登移动端

  • 通过模型操作数据表。操作 sqlite 3
C:\Users\admin>cd Desktop\bncDome\test1
C:\Users\admin\Desktop\bncDome\test1>python manage.py shell
In [3]: from booktest.models import BookInfo
In [6]: from datetime import date

In [4]: b=BookInfo()

# 插入
In [5]: b.btitle = '天龙八部'
In [9]: b.bpub_date = date(1990,1,1)
In [10]: b.save()

# 查找
In [14]: b2=BookInfo.objects.get(id=1)
In [15]: type(b2)
Out[15]: booktest.models.BookInfo
In [16]: b2.btitle
Out[16]: '天龙八部'

# 更新
In [17]: b2.btitle ='笑傲江湖'
In [18]: b2.save()
In [19]: b2.btitle
Out[19]: '笑傲江湖'

#删除
In [23]: b2.delete()

模型M

  • 模型与模型关系

笔记11:Django入门

生成迁移文件

笔记11:Django入门

生成迁移表

笔记11:Django入门

笔记11:Django入门

笔记11:Django入门

笔记11:Django入门

  • Django操作后台管理

(1)本地化语言与时间

笔记11:Django入门

(2)创建管理员

笔记11:Django入门

(3)启动服务器

笔记11:Django入门

(4)浏览器访问

笔记11:Django入门

(5)注册模型类

笔记11:Django入门

笔记11:Django入门

笔记11:Django入门

笔记11:Django入门

(6)列表文本显示

笔记11:Django入门

笔记11:Django入门

(7)自定义管理页面

笔记11:Django入门

笔记11:Django入门

视图V

  • 视图使用:当视图与T交互时候,首先浏览器地址中127.0.0.1\index。找到项目第三步中的url中的urlpatterns中查找,\与^ 一样,逐渐往下匹配。找到booktest.urls。然后跳到app中的booktest中的urls(第二步)继续匹配。对应的是一个视图views.index,就会跳到视图views.py匹配,即第一步

(1)编写view代码,定义视图函数,返回浏览器的内容

笔记11:Django入门

(2)创建urls.py:配置url路由,注意严格匹配开头结尾。地址视图都在这里直接匹配

笔记11:Django入门

笔记11:Django入门

笔记11:Django入门

(3) 项目的url文件配置,包含对应的app中的视图

笔记11:Django入门

  • ur与视图匹配过程

    笔记11:Django入门 l

Template模板

(1)根项目下创建模板templates文件夹

笔记11:Django入门

(2)配置模板目录

  • 项目绝对路径,查看即可

笔记11:Django入门

  • 设置目录文件路径

笔记11:Django入门

  • 配置模板文件,每个app下创建一个模板文件名如booktest

笔记11:Django入门

这里面的模板文件为html,而模板中不仅仅为html。其中支持变量,变量使用两个花括号,;里面是view.py中设置的字典键名。

  • 模板中的遍历

笔记11:Django入门

(3)使用模板文件

笔记11:Django入门

  • 模板渲染:产生标准的html

    笔记11:Django入门

  • 封装以上步骤

笔记11:Django入门

注意:使用模板文件中需要以上四个步骤,对以上四步进行封装为my_render遍历高效执行。幸运的是django已经帮我们封装好了这个方法为render。其中第一个参数为request,第二个是模板路径,第三个参数是变量字典,没有变量则为空

笔记11:Django入门

笔记11:Django入门

笔记11:Django入门

  • 显示结果

笔记11:Django入门

MVT综合案例

(1)启动项目解决端口号占用,指定端口号

笔记11:Django入门

(2)案例介绍

笔记11:Django入门

笔记11:Django入门

(3)视图编写,先导入模型model类,查找 MongoDB 数据库的表信息

笔记11:Django入门

笔记11:Django入门

(4)配置url,记得配置主项目下的urls.py,这个文件一次配置多次使用

笔记11:Django入门

(5)创建模板文件

笔记11:Django入门

(6)显示图书信息,主页信息

笔记11:Django入门

(7) 在视图里面编写图书管理的详细信息

笔记11:Django入门

笔记11:Django入门

(8) 设置URL地址以及传参

笔记11:Django入门

Django在页面间传参的原理是,在页面url配置时候通过括号里面的组进行传参,后面视图会自动解析组内容进行参数填充。多个参数多个组

(8)创建子页面信息

笔记11:Django入门

Django使用MySQL

(1)创建新的项目:django-admin startproject tets2

(2) 创建app: django-admin startapp booktest

(3) setting.py中的INSTALLED_APPS注册应用booktest

(4) setting.py中的DATABASES中配置数据库

DATABASES = {
    'default': {
        # 'ENGINE': 'django.db.backends.sqlite3',
        # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE': 'django.db.backends.mysql',
        'NAME':'bj18',
        'USER':'root',
        'PASSWORD':'admin',
        'HOST':'127.0.0.1',
        'PORT':3306,
    }
}

(5) 预先安装pip install pymysql,之后在test2中需要加两句话:

笔记11:Django入门

笔记11:Django入门

(6) 根目录下启动服务: python manage.py runserver

(7) 迁移表:python manage.py makemigrations

(8) mysql数据库同步表:python manage.py migrate

笔记11:Django入门

(9) 编写views

from django.shortcuts import render

from booktest.models import BookInfo

# Create your views here.
def index(request):
    # 1 查询所有信息
    books = BookInfo.objects.all()
    # 2 使用模板
    return render(request,'booktest/index.html',{'books':books})

(10) 设置模板目录DIRS

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

(11) 在templates下新建booktest文件夹,然后创建html

(12) 配置urls

from django.contrib import admin
from django.urls import path,include


urlpatterns = [
    path('admin/', admin.site.urls),
    path('booktest/', include('booktest.urls') )
]

booktest的urls

from django.urls import path,include

from booktest import views
urlpatterns = [
    path('',views.index,name='index')
]

重定向

from django.shortcuts import render,redirect

def create(request):
    b = BookInfo()
    b.btitle = '流星蝴蝶剑'
    b.bpub_date= datetime.date(1990,1,1)
    b.save()
    # return HttpResponse('ok')
    return redirect('index')

(13)mysql日志文件

笔记11:Django入门

(14)模型-模型关系:1:1,1:多,多:多

笔记11:Django入门

两个类之间有多对多的关系,ManyToManyField定义在哪个类里面都可以

笔记11:Django入门

(15)模型-关联查询

笔记11:Django入门

笔记11:Django入门

(16)管理器对象

笔记11:Django入门

笔记11:Django入门

笔记11:Django入门

笔记11:Django入门

(17)元选项:不会因为app改变影响模型类,然后重新做下迁移

笔记11:Django入门

模型类对应的表名不依赖于应用的名字

机器学习和自然语言QQ群:436303759

机器学习和自然语言(QQ群号:436303759)是一个研究深度学习、机器学习、自然语言处理、数据挖掘、图像处理、目标检测、数据科学等AI相关领域的技术群。其宗旨是纯粹的AI技术圈子、绿色的交流环境。本群禁止有违背法律法规和道德的言谈举止。群成员备注格式:城市-自命名。微信订阅号:datathinks


以上所述就是小编给大家介绍的《笔记11:Django入门》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Tagging

Tagging

Gene Smith / New Riders / 2007-12-27 / GBP 28.99

Tagging is fast becoming one of the primary ways people organize and manage digital information. Tagging complements traditional organizational tools like folders and search on users desktops as well ......一起来看看 《Tagging》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

随机密码生成器
随机密码生成器

多种字符组合密码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器