Django(1)概述

简介: Django(1)概述

一、Django概述


Django是一个由Python编写的开源的Web应用框架(用于进行Web开发的一套软件架构)


使用Django框架,只需要很少的代码就可以轻松完成一个正式网站所需要的大部分内容,并且进一步开发出全功能的Web功能。Django本身基于MVC模型(Model模型+View视图+Controller控制器的设计模式),MVC模式使后续对程序的修改和扩展简化,并且使程序的某一部分重复利用成为可能


Django是MTV模式,本质和MVC模式是一样的


Python+Django使快速开发、设计、部署网站的最佳组合,特点:


强大的数据库功能

自带强大的后台功能

优雅的网址


- MVC模型


  • MVC模式是一种软件架构模式,它把软件系统分为三个部分:


模型(Model):业务逻辑处理,主要用来负责业务逻辑的处理、数据的保持,编写程序应有的功能,负责业务对象与数据库的映射(ORM对象映射关系),Model使MVC模型的核心部分,并且它也是需要实现的最主要的部分 (编写的功能、数据库的连接与管理)


视图(View):画面表示,图形界面,负责与用户的交互 (展示的页面)

控制器(Controller):控制,负责转发请求,接收从View视图发过来的数据,并且对请求进程处理,主要负责控制Model模型和View视图 (负责转发用户请求对请求进行处理)


MVC模式的目的是实现一种动态的程序设计,用于简化后续对程序的修改和扩展,并且使程序某一部分的重复利用成为可能


MVC以一种插件式的、松耦合的方式连接在一起,下面是菜鸟的用户操作流程图:


35c253ad33da49bbbbdd93e0ac36f541.png


下面是从Django MTV和MVC的区别 (biancheng.net)网站中MVC的流程图


16db5241f2d8414ba451393582194216.png


- MTC模型


  • Django的MTV模式本质上和MVC是一样的,这也是为了各组件间保持松耦合关系,只是定义上有些不同,Django的MTV分别是:


模型(Model):编写程序应有的功能,负责数据管理 (与MVC的模型作用相似)


模板(Template):负责网页展示 (相当于MVC的视图)


视图(View):负责业务逻辑控制,并且会在适当时候调用模型和模板 (相当于MVC的控制器)


除了上面三层之外,还需要一个URL分发器,分发器的作用是将一个个URL的页面请求分发给不同的视图处理,视图再去调用相应的模型和模板,下面是菜鸟的用户操作流程图:

19b51558bab24fbaab3930efc0f9fcb5.png


下面是从Django MTV和MVC的区别 (biancheng.net)网站中MTC的流程图

fe54392ff19b4aa1a300ae176940ef0b.png


二、安装Django(windows)


注意:这里使用VSCode安装Django


  • 安装VSCode,安装后进入扩展,安装Python

acc862721b52486797d7092d762c9cf5.png


创建项目文件夹

215e8bd0231a4e9697ad4320d385dcf5.png


使用VSCode打开项目文件夹django,然后打开终端,输入python -m venv test,创建虚拟环境test


b8246e324b704e14b4d442fd29ac67b3.png

在VSCode中按键Ctrl+Shift+p,输入>python:Select Interpreter,选择Python解释器为虚拟环境的路径


(就是创建的虚拟环境目录下的python程序)


d986ace460c445f0b36112c65b2f600e.png

  • 进入虚拟环境,安装Django(在终端中操作)


#进入虚拟环境
PS F:\django> cd .\test\Scripts\
PS F:\django\test\Scripts> . .\activate  #进入虚拟环境
(test) PS F:\django\test\Scripts>    #前面多出(test)表示成功进入虚拟环境
#安装django
(test) PS F:\django\test\Scripts> pip -V
pip 22.0.4 from F:\django\test\lib\site-packages\pip (python 3.10)
(test) PS F:\django\test\Scripts> pip install django
#下载慢的话使用这个
——————————————————————————————————————————————————————
pip install -i https://pypi.douban.com/simple django
——————————————————————————————————————————————————————
(test) PS F:\django\test\Scripts> python
Python 3.10.4 (tags/v3.10.4:9d38120, Mar 23 2022, 23:13:41) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import django  #成功导入,可以看到版本,就说明安装成功
>>> django.VERSION
(4, 1, 0, 'final', 0)


  • 至此,windows上的django安装完成


三、第一个Django项目


  • 安装Django后,我们可以使用管理工具django-admin
(test) PS F:\django\test\Scripts> django-admin  #直接执行,会有此命令的介绍
Type 'django-admin help <subcommand>' for help on a specific subcommand.
Available subcommands:
[django]
    check
    compilemessages
    createcachetable
    dbshell
    diffsettings
    dumpdata
    flush
    inspectdb
    loaddata
    makemessages
    makemigrations
    migrate
    runserver
    sendtestemail
    shell
    showmigrations
    sqlflush
    sqlmigrate
    sqlsequencereset
    squashmigrations
    startapp
    startproject
    test
    testserver
Note that only Django core commands are listed as settings are not properly configured (error: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.).
  • 下面来创建helloworld项目
#回到项目目录
(test) PS F:\django\test\Scripts> cd ../../
(test) PS F:\django> django-admin startproject helloworld  #创建django项目helloworld
(test) PS F:\django> ls  
    目录: F:\django
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----          2022/7/1     16:59                helloworld   #可以看到成功创建
d-----          2022/7/1     16:53                test
(test) PS F:\django> cd .\helloworld\
(test) PS F:\django\helloworld> ls
    目录: F:\django\helloworld
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----          2022/7/1     16:59                helloworld
-a----          2022/7/1     16:59            688 manage.py
(test) PS F:\django\helloworld> python .\manage.py runserver 0.0.0.0:8000  #启动,端口8000,0.0.0.0可以使所有IP都可以访问,如果只配置端口,那么只有本地能访问
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
July 01, 2022 - 17:25:35
Django version 4.0.5, using settings 'helloworld.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CTRL-BREAK.
#Ctrl+c退出
  • 访问本地127.0.0.1:8000,访问成功!!!


d07191aa08e74783b280f2b7b6cf72cf.png


  • 创建之后,其实可以看到此项目的目录结构:
(test) PS F:\django\helloworld> ls 
    目录: F:\django\helloworld
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----          2022/7/1     17:01                helloworld  #这个就是项目容器
-a----          2022/7/1     17:01              0 db.sqlite3  #这个是python自带的数据库
-a----          2022/7/1     16:59            688 manage.py   #一个实用的命令行工具,让我们可以以各种方式与Django项目进行交互
(test) PS F:\django\helloworld> ls .\helloworld\
    目录: F:\django\helloworld\helloworld
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----          2022/7/1     17:01                __pycache__
-a----          2022/7/1     16:59            413 asgi.py  #一个ASGI兼容的Web服务器入口,方便运行我们的项目
-a----          2022/7/1     16:59           3356 settings.py  #此Django项目的设置文件
-a----          2022/7/1     16:59            773 urls.py   #此Django项目的URL声明,一份由Django驱动的网站“目录”,里面可以指定“网页”
-a----          2022/7/1     16:59            413 wsgi.py #一个WSGI兼容的Web服务器入口,方便运行我们的项目
-a----          2022/7/1     16:59              0 __init__.py   #一个空文件,告诉Python此目录是一个Python包
  • 在创建Django项目后,项目目录的结构:


  1. helloworld:项目容器
  2. manage.py:Django的命令行工具


项目容器中的文件:


  1. asgi.py:一个ASGI兼容的Web服务器入口,方便运行我们的项目
  2. settings.py:此Django项目的设置文件
  3. urls.py:此Django项目的URL声明,一份由Django驱动的网站“目录”,里面可以指定“网页”
  4. wsgi.py:一个WSGI兼容的Web服务器入口,方便运行我们的项目
  5. __init__.py:一个空文件,告诉Python此目录是一个Python包


  • 网页可以调整为中文,修改项目容器中的settings.py文件,修改LANGUAGE_CODEzh-Hans

49c597fa46b74780aaa8532402572efc.png

642b7d2ed4ab46ad980f6b18926922a4.png

注意:代码修改完后无需重启,服务器会自动检测代码的改动并且自动载入


  • 再次访问:



7593d633941f4d08a67557350db5860c.png


  • 我们在启动的时候,虽然是配置了0.0.0.0:8000,但是还需要改一下配置,才可以使其他ip都能访问,同样还是settings.py文件,修改ALLOWED_HOSTS = []ALLOWED_HOSTS = ["*"]


40d42f5674a748858d41a7c117c6a396.png

95cc1a9f689846e4add69cf04be60b7d.png

在修改文件、保存之后,可以从终端看到重载的日志:



5b6248590f1549b692398dd626a3ea5b.png

- 更换页面(添加访问资源)


  • 在helloworld目录下的helloworld容器中,新建一个index_test.py文件,这是我们新建的页面


#-*- coding: utf-8 -*-
from django.http import HttpResponse
def hello(request):
    return HttpResponse("Hello World!!!")
  • 文件创建后,绑定URL和视图函数,打开urls.py文件,删除原来代码,重新编写

其中path()函数的使用:


path(route, view, kwargs=None, name=None)


route:必选参数,传入字符串,表示URL匹配规则,会执行对应的第二个参数view

view:必选参数,用于执行与正则表达式匹配的URL请求,下面就是调用了index_test模块中的hello函数,也就是调用页面的

kwargs:可选参数,视图使用的字典类型的参数

name:用来反向获取URL

#-*- coding: utf-8 -*-
from django.urls import path
from . import index_test
urlpatterns = [
    path('hello/',index_test.hello),            #指定hello资源,这里指定的就是index_test.hello()方法
]

修改后,可以看到,日志刷新,访问127.0.0.1:8000/hello,发现页面已经更改


7d161ccf34e64fb69b1f894445169672.png





  • 注意:


菜鸟教程中导入的是django.conf.urls,此方法在Django2.0以上版本已经被django.urls取代,所以需要使用path

目录
相关文章
|
2月前
|
SQL API 数据库
Django如何使用?
【9月更文挑战第1天】Django如何使用?
29 3
|
6月前
|
缓存 前端开发 Unix
Django简介
Django简介。
76 1
|
6月前
|
前端开发 JavaScript 中间件
Django实践-02创建应用
Django实践-02创建应用
Django实践-02创建应用
|
开发框架 .NET PHP
Django概述
Django概述
|
数据库 Python
Django的基础学习
Django基本的项目安装和运行
Django的基础学习
|
安全 关系型数据库 测试技术
Django 最佳实践
Django 最佳实践
161 0
|
存储 中间件 关系型数据库
Django项目框架搭建,快速入门Django
Django提供了django-admin这个功能强大的命令行管理工具,其中最重要的就是可以利用它来完成项目的创建
174 0
Django项目框架搭建,快速入门Django
|
数据库连接 数据库 Python
Django的基础学习(上)
Django的基础学习
92 0
|
Python
Django的基础学习(下)
Django的基础学习(下)
124 0
|
SQL 缓存 自然语言处理
Django入门-1:Django简介和环境搭建
Django入门-1:Django简介和环境搭建
357 0
Django入门-1:Django简介和环境搭建