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. 开心档之MySQL WHERE 子句

    MySQL WHERE 子句 我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据. 如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句中. 语法 以下是 ...

  2. vue3组合式API介绍

    为什么要使用Composition API? 根据官方的说法,vue3.0的变化包括性能上的改进.更小的 bundle 体积.对 TypeScript 更好的支持.用于处理大规模用例的全新 API,全 ...

  3. 如何生成文本: 通过 Transformers 用不同的解码方法生成文本

    简介 近年来,随着以 OpenAI GPT2 模型 为代表的基于数百万网页数据训练的大型 Transformer 语言模型的兴起,开放域语言生成领域吸引了越来越多的关注.开放域中的条件语言生成效果令人 ...

  4. Java的static修饰符

    静态域 如果将域定义为 static,每个类中只有一个这样的域.而每一个对象对于所有的实例域却都有自己的一份拷贝.例如,假定需要给每一个雇员赋予唯一的标识码.这里给 Employee 类添加一个实例域 ...

  5. H.323详解

    H.323详解 文章中的某些图粘不上去,可到资源页下载word版点击打开链接 转载博客:https://blog.csdn.net/hemingliang1987/article/details/16 ...

  6. autojs系列-js入门1

    开头 确保 Autojs 和 adb 还有模拟器安装调试完成之后,就可以进行js的学习了 调试安装一部分步骤可以参考 https://www.cnblogs.com/c-keke/p/14919615 ...

  7. 2021-02-21:手写代码:高性能路由,也就是一个字符串和多个匹配串进行模糊匹配。一个数组arr里是["*a*","moonfdd"],字符串"moonfdd"能匹配到,理由是arr里有。字符串"xayy"也能匹配到,理由是arr里的"*a*",第1个星对应"x",第2个星对应"yy"。

    2021-02-21:手写代码:高性能路由,也就是一个字符串和多个匹配串进行模糊匹配.一个数组arr里是["a","moonfdd"],字符串"moo ...

  8. CPU后面的字母含义

    M(Mobile):移动笔记本电脑标准电压,功耗小,适合笔记本,i5-4310M. U(Ultra Low Voltage):移动笔记本电脑超低电压,更小的功耗.如i5-8250U. H(Height ...

  9. 声音好听,颜值能打,基于PaddleGAN给人工智能AI语音模型配上动态画面(Python3.10)

    借助So-vits我们可以自己训练五花八门的音色模型,然后复刻想要欣赏的任意歌曲,实现点歌自由,但有时候却又总觉得少了点什么,没错,缺少了画面,只闻其声,却不见其人,本次我们让AI川普的歌声和他伟岸的 ...

  10. 运行和编译时期资源加载的不同【vue】

    开发语言都有编译和运行两个阶段,很多时候这个也会带来许多bug 如:一个项目在开发阶段测试没有问题,然上线发布后就会有这样那样的问题,譬如说图片的加载,静态数据(js,css,json)读取错误 一 ...