1.安装Django

终端运行

pip install django

查看django是否安装成功

python -m django --version

1.1 安装虚拟环境

在控制台运行

pip install virtualenv

1.1.2 创建虚拟环境

在特定文件夹内打开终端运行

virtualenv -p D:\program_condition\python\python.exe env_dj
virtualenv -p python解释器所在位置 项目名称

生成

1.2激活和退出虚拟环境

进入上图的Scripts文件夹内,打开终端

activate  # 激活

deactivate.bat # 退出

1.3 安装和配置VSCode

  1. 先正常安装VSCode

  2. 再安装python插件

  3. 安装Django插件,搜索django,安装前两个

2.关于Django

特点

  • 功能完善,开发速度快,安全性强
  • 有完善的在线文档
  • 模型自带数据库ORM组件
  • 可以使用正则表达式管理路由映射,方便灵活

2.1 MVC和MTV模式

目前主流的web框架,基本上使用MVC模式开发web应用,最大优势在于可以降低系统各个模块间的耦合度。

2.1.1 MVC软件架构模式

该模式将Web应用开发分为三个层次:

  • 模型(Model):负责处理各个功能的实现。
  • 视图(View):负责页面的显示和用户的交互。包含由HTML,CSS, JS组成的各种页面。
  • 控制器(Controller):用于将用户请求转发给相应的模型进行处理,并根据模型的处理结果向用户提供相应的响应。

具体应用的例子

Web应用程序:

  • M(Model):业务逻辑,例如数据库交互和数据处理等。
  • V(View):用户界面,例如HTML和CSS等。
  • C(Controller):处理用户请求和控制用户界面,例如处理HTTP请求和调用模型逻辑等。

桌面应用程序:

  • M(Model):文本编辑器的数据模型,例如保存文本数据等。
  • V(View):用户界面,例如文本编辑器的UI界面。
  • C(Controller):处理用户输入和状态管理,例如处理用户的鼠标和键盘输入、保存文件等。

2.1.2 MTV模式

Django对MVC模式进行修改,成为MTV模式。

  • M:模型,负责业务对象和数据库的关系映射(ORM)
  • T:模板,负责页面的显示和用户的交互
  • V:视图,负责业务逻辑,并在适当的时候调用Model和Template

还包含了一个URL分发器,将一个个URL页面请求分发给不同的View进行处理。view再调用相应的Model和Template。此时,URL分发器和View共同充当了控制器(Controller)。

在MTV模式下,urls.pyviews.py 对应控制器,models.py对应模型Model,视图view对应templates下的所有文件。

3.开发第一个Django应用

3.1 创建项目

在终端进入项目文件夹,激活虚拟环境,执行

django-admin startproject mydjango  # mydjango为自定义名称

生成mydjango项目,目录:

mydjango  # 根目录 可以任意命名
│ manage.py # 一个命令行使用程序,命令行方式与Django项目交互
└─mydjango # 项目目录。这个名称不能修改
asgi.py # 与ASGI兼容的Web服务器,为项目提供服务的入口
settings.py # 该项目的全局配置文件
urls.py # 该项目的路由配置文件
wsgi.py # 兼容WSGI的Web服务器,为你的项目提供服务的入口
__init__.py # 空文件,告诉python该目录应该被视为python包目录

3.2 创建应用

cd进入根目录,创建一个名为myapp 的应用,命令如下:

python manage.py startapp myapp  # myapp为应用名称 可自定义

应用目录结构:

myapp  # 应用目录,不能修改名称
│ admin.py # 后台管理使用
│ apps.py # 应用管理文件
│ models.py # 模型文件
│ tests.py # 测试用例
│ views.py # 视图文件
│ __init__.py #

└─migrations # 该目录包含了数据迁移文件,默认包含__init__.py
__init__.py # 一个空文件,告诉python该目录应该被视为python包目录

创建应用后,需要在全局配置文件中手动注册:打开 mydjango\settings.py 文件,找到INSTALLED_APPS 节点,添加应用名称

3.3 处理控制器

控制器主要有视图文件views.py和路由文件urls.py组成

  • 视图函数,实现模板与模板之间的交互
  • 处理请求主要也是由视图函数完成
  • 先处理视图的动态逻辑 myapp/views.py
from django.shortcuts import render # 该方法的作用是将指定的模板进行渲染,并将渲染结果返回给客户端

# Create your views here.
from django.http import HttpResponse # 该类用于构造HTTP响应对象
from myapp import views # 导入视图函数 def index(request): # 视图函数index,该函数接收一个request对象作为参数,该对象包含了客户端的请求信息
return render(request, '1/index.html') # 该行调用render方法,将index.html模板进行渲染,并将渲染结果返回给客户端。在该方法中,第一个参数是request对象,第二个参数是要渲染的模板文件名

以上代码的作用是定义一个视图函数,当客户端访问该视图的时候,该视图将渲染index.html模板文件,并将渲染结果返回给客户端。

  • 处理URL请求路径mydjango\urls.py
from django.contrib import admin
from django.urls import path urlpatterns = [
path('index/', views.index),
]

第四行的作用:定义了一个urlpatterns列表,该列表存储了所有的URL路由映射关系,path()方法用于定义一个路由映射规则,该方法接收两个参数,第一个参数是路由路径,第二个参数是视图函数。该例子中,path('index/', views.index)表示当用户访问localhost:8000/index/路径时,该请求将被路由到views.py文件中的index()函数进行处理。定义了一个URL路由,将localhost:8000/index/路径映射到了views.py文件中的index()函数进行处理。

3.4 处理模板

默认没有模板目录,需要手动创建,还需设置全局配置文件。

3.4.1 创建模板目录和模板文件

在manage.py的同级目录中创建templates目录。

在templates目录下创建一个 1 目录,用来保存本章的模板文件;在1 目录下新建一个index.html文件,在文件中添加

<div style = "color : red; font-size : 24px;">
你好 Django!
</div>

创建好模板目录后,还不能直接使用,需要在全局文件中对模板目录进行注册。

3.4.2 配置全局设置文件settings.py

打开mydjango\setting.py 文件,找到TEMPLATES 选项,修改代码

import os # 导入模块
'DIRS': [os.path.join(BASE_DIR, 'templates')],

3.5 运行应用

在终端打开应用根目录,运行

python manage.py runserver

浏览器地址输入:127.0.0.1:8000 即可访问

出现一个小插曲:输入后初始页面正常

但是访问index页面无法访问,终端也没报错,停止运行后,才出现报错提示

原来是url文件中没有导入视图函数

from myapp import views

成功!

Django学习笔记:第二章django的安装和创建应用的更多相关文章

  1. 《DOM Scripting》学习笔记-——第二章 js语法

    <Dom Scripting>学习笔记 第二章 Javascript语法 本章内容: 1.语句. 2.变量和数组. 3.运算符. 4.条件语句和循环语句. 5.函数和对象. 语句(stat ...

  2. The Road to learn React书籍学习笔记(第二章)

    The Road to learn React书籍学习笔记(第二章) 组件的内部状态 组件的内部状态也称为局部状态,允许保存.修改和删除在组件内部的属性,使用ES6类组件可以在构造函数中初始化组件的状 ...

  3. [HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的“HT”

    [HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的"HT" 敲黑板!!! 创建HTML超链接 <a>链接文本(此处会有下划线,可以单击 ...

  4. Spring学习笔记 - 第二章 - 注解开发、配置管理第三方Bean、注解管理第三方Bean、Spring 整合 MyBatis 和 Junit 案例

    Spring 学习笔记全系列传送门: Spring学习笔记 - 第一章 - IoC(控制反转).IoC容器.Bean的实例化与生命周期.DI(依赖注入) [本章]Spring学习笔记 - 第二章 - ...

  5. SpringMVC学习笔记 - 第二章 - SSM整合案例 - 技术整合、统一结果封装、统一异常处理、前后联调、拦截器

    [前置内容]Spring 学习笔记全系列传送门: Spring学习笔记 - 第一章 - IoC(控制反转).IoC容器.Bean的实例化与生命周期.DI(依赖注入) Spring学习笔记 - 第二章 ...

  6. (转)Django学习之 第二章:Django快速上手

    安装Python  安装Django非常容易.因为Django可以运行在任何可以运行Python的环境中,所以可以以多种方式进行配置. 在本章我们将尝试覆盖几种常见的Django安装场景. Djang ...

  7. Django学习笔记之使用 Django项目开发框架

    Django 项目是一个定制框架,它源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来.Django 框架的核心组件有: 用于创建模型的对象关系映射 为最终用户设计的完美管理界面 ...

  8. [HeadFirst-JSPServlet学习笔记][第二章:高层概述]

    第二章:高层体系结构 容器 1 什么是容器? servelet没有main()方法.它们受控于另一个Java应用,这个Java应用称为容器(Container) Tomcat就是这样一个容器.Web服 ...

  9. c#高级编程第七版 学习笔记 第二章 核心c#

    第二章 核心C# 本章内容: 声明变量 变量的初始化和作用域 C#的预定义数据类型 在c#程序中使用条件语句.循环和跳转语句执行流 枚举 名称空间 Main()方法 基本的命令行c#编译器选项 使用S ...

  10. Django学习笔记第二篇--关于请求获取

    #细节都在代码段里面讲解 零.绪论: HTTP协议是一种请求响应的协议,一次请求一次响应.所以这部分的讲解将分为三个部分:请求获取,分析处理.返回响应. 一.获取请求数据: 1.POST和GET类型 ...

随机推荐

  1. 基于Canal实现MySQL 8.0 数据库数据同步

    前言 服务器说明 主机名称 操作系统 说明 192.168.11.82 Ubuntu 22.04 主库所在服务器 192.168.11.28 Oracle Linux Server 8.7 从库所在服 ...

  2. redission分布式redis锁使用

    public void lock(String key, List<Long> idx) { if (CollectionUtils.isEmpty(idx)) { return; } i ...

  3. 案例分享-full gc导致k8s pod重启

    在之前的记一次k8s pod频繁重启的优化之旅中分享过对于pod频繁重启的一些案例,最近又遇到一例,继续分享出来希望能给大家带来些许收获. 问题现象 报警群里突然显示某pod频繁重启,我随即上去查看日 ...

  4. 记一次 .NET 某车零件MES系统 登录异常分析

    一:背景 1. 讲故事 这个案例有点特殊,以前dump分析都是和软件工程师打交道,这次和非业内人士交流,隔行如隔山,从指导dump怎么抓到问题解决,需要一个强大的耐心. 前几天有位朋友在微信上找到我, ...

  5. 文心一言 VS chatgpt (7)-- 算法导论2.3 3~4题

    三.使用数学归纳法证明:当n刚好是2的幂时,以下递归式的解是 T(n)=nlgn.若n=2,T(n)=2:若n=2^k,k>1,T(n)=2T(n/2)+n. 文心一言: chatgpt: 首先 ...

  6. 2023-03-24:音视频mp3和h264混合(muxer)编码为mp4,用go语言编写。

    2023-03-24:音视频mp3和h264混合(muxer)编码为mp4,用go语言编写. 答案2023-03-24: 这是一个使用FFmpeg库将MP3和H.264混合编码为MP4的Go语言程序. ...

  7. 2020-08-23:描述HTTPS和HTTP的区别。

    福哥答案2020-08-23: 1.地址区别http:http://开头.https:https://开头. 2.默认端口区别http:端口80.https:端口443. 3.数据传输区别http:明 ...

  8. 2021-02-23:给定一个正数n,求n的裂开方法数。规定:后面的数不能比前面的数小 。比如4的裂开方法有: 1+1+1+1、1+1+2、1+3、2+2、4,5种,所以返回5。

    2021-02-23:给定一个正数n,求n的裂开方法数.规定:后面的数不能比前面的数小 .比如4的裂开方法有: 1+1+1+1.1+1+2.1+3.2+2.4,5种,所以返回5. 福哥答案2021-0 ...

  9. Netty自定义协议要素

    魔数:用来判断是否是无效数据包 协议版本号:可以支持协议的升级 序列化算法:消息正文使用哪种序列化方式,可以扩展.例如:protobuf,json,hessian等 指令类型:跟业务相关,例如:登录, ...

  10. Transformer 估算 101

    本文主要介绍用于估算 transformer 类模型计算量需求和内存需求的相关数学方法. 引言 其实,很多有关 transformer 语言模型的一些基本且重要的信息都可以用很简单的方法估算出来.不幸 ...