Django学习笔记一初识Django_unique_pursuit的博客-程序员秘密

技术标签: rpc  # Django  Django  linux  Python  

1 Django简介

1.1 基本介绍

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

MVC 优势:

  • 低耦合
  • 开发快捷
  • 部署方便
  • 可重用性高
  • 维护成本低

Python 加 Django 是快速开发、设计、部署网站的最佳组合。

1.2 开发框架模型

1.2.1 简介

目前的开发框架模型可以按是否前后端分离来划分。其中各自特点如下:

前后端不分离特点:

  • 后端需控制数据的展示
  • 前后端不分家,耦合严重
  • 返回的是HTML页面,适应性、拓展性差
    • 只能用于浏览器,其它终端不匹配

前后端分离的特点:

  • 当前主流
  • 后端只对数据进行处理,只提供数据
  • 前端效率、页面好不好看,全由前端负责,前后端完全独立
  • 解耦合
  • 前后端同时开发,缩小业务上线周期
  • 绝大多数情况下,前端发送json格式的参数,后端同样以json格式的数据返回
    • 适应性、拓展性好
    • 适合多终端运行同一套接口(PC、APP、小程序等)

在本文中,对前后端不分离的开发框架模型这里不作叙述,这里主要介绍前后端分离的MVC模型和MVT模型。

1.2.2 MVC模型

  • 体现:Java常用MVC模式,比如SpringMVC。
  • MVC各部分的解释
    • M/Model(模型):主要封装对数据层的操作,对数据库的数据进行增删改查操作。
    • V/View(视图):用于封装结果的,然后生成用于展示html。
    • C/Controller(控制器):用于接收请求,然后处理业务逻辑,并返回结果。它处于Model和View之间,与两者交互。
  • 图解
    在这里插入图片描述

1.2.3 MVT模型

  • 体现:Python中的Django框架就是MVT

  • MVT各部分的解释

    • M/Model(模型):与MVC的M功能相同,主要封装对数据层的操作,对数据库的数据进行增删改查操作。
    • V/View(视图):与MVC的C功能相同,接收请求,逻辑处理,返回结果。
    • T/Template(模板):和MVC中的V功能相同,负责封装和生成要返回的html。
  • 图解

    MVT模型

2 Django安装

如果你还未安装Python环境需要先下载Python安装包。注意:目前的 Django 1.6.x 以上版本已经完全兼容 Python 3.x。

使用pip3 install Django==版本号 -i https://pypi.tuna.tsinghua.edu.cn/simple即可安装Django,注意使用镜像源下载,不然下载速度会很慢。

检查是否安装成功:

image-20220305175927603

3 Django项目框架—创建第一个项目

3.1 Django管理工具

安装好Django之后,我们现在就有了可用的管理工具django-admin,这个其实就是一个py文件,代码如下:

from django.core import management
 
if __name__ == "__main__":
    management.execute_from_command_line()

django-admin.py调用django.core.management来执行命令,这个函数会根据命令行参数解析出命令的名称,根据命令的名称来调用相应的Command执行命令。

3.2 创建第一个项目

使用django-admin来创建HelloWorld项目:

django-admin startproject HelloWorld

创建完成后,我们可以查看HelloWorld的目录结构如下:

image-20220305191934585目录说明:

  • HelloWorld: 项目的容器。
  • manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
  • HelloWorld/init.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
  • HelloWorld/asgi.py: 一个 ASGI 兼容的 Web 服务器的入口,以便运行你的项目。
  • HelloWorld/settings.py: 该 Django 项目的设置/配置。
  • HelloWorld/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。
  • HelloWorld/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。

我们进入HelloWorld目录后输入以下命令启动服务器:

python3 manage.py runserver 0.0.0.0:8000

其中0.0.0.0是为了让其他电脑能连接到开发服务器,8000 为端口号。如果不说明,那么端口号默认为 8000,但建议指明端口号。

在浏览器输入我们的ip地址(如果是云服务器,则输入公网地址,如果是本机,则可以输入本机地址:127.0.0.1)。这里特别说明,若是云服务器,我们必须在控制台开放8000端口号和80端口号,要不然访问不了。如果没有将IP地址添加到ALLOWED_HOSTS,则会出现如图错误:

我们需要将IP地址添加到settings.py中的ALLOWED_HOSTS中。再次访问出现如下界面,此为Django的默认界面:

3.3 视图和URL配置

在先前创建的HelloWorld目录下的HelloWorld目录新建一个views.py,并输入代码:

from django.http import HttpResponse
 
def hello(request):
    return HttpResponse("Hello world ! ")

接着,绑定 URL 与视图函数。打开 urls.py 文件,删除原来代码,将以下代码复制粘贴到 urls.py 文件中:

from django.urls import path
 
from .views import hello
 
urlpatterns = [
    path('', hello),
]

完成后,启动 Django 开发服务器,并在浏览器访问打开浏览器并访问:

我们可以修改path,例如改为path('/hello', hello),那么url即为:http://127.0.0.1/hello。这个path函数可以接收四个参数,分别是两个必选参数:routeview和两个可选参数:kwargsname。语法格式如下:

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

  • route: 字符串,表示 URL 规则,与之匹配的 URL 会执行对应的第二个参数 view。
  • view: 用于执行与正则表达式匹配的 URL 请求。
  • kwargs: 视图使用的字典类型的参数。
  • name: 用来反向获取 URL。

注意:项目中如果代码有改动,服务器会自动监测代码的改动并自动重新载入,所以如果你已经启动了服务器则不需手动重启。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hzf0701/article/details/123923844

智能推荐

dpkg: warning: files list file for package 'x' missing 问题_无名小卒000001的博客-程序员秘密

解决 dpkg: warning: files list file for package 'x' missing 问题转自 https://serverfault.com/questions/430682/dpkg-warning-files-list-file-for-package-x-missing在Ubuntu下通过apt-get安装软件或者更新时,出现大量的dpkg: warn...

【解决方法】ADT在线安装_Bottle的博客-程序员秘密

作为android开发者,不知道被ADT更新、SDK更新这些更新给强奸了多少次。今天……我又一次被凌辱了。无论是https://dl-ssl.google.com/android/eclipse还是http://dl-ssl.google.com/android/eclipse都无法更新。老子怒了,解决方法:hosts文件添加:74.125.237.1 d

java8 matespace_JDK8记FullGC时候Metaspace内存不会被垃圾回收_weixin_39838362的博客-程序员秘密

本文链接:https://blog.csdn.net/a15939557197/article/details/90635460背景前段时间有一个这样的需求:第三方调用接口,30分钟内调用120W次;物理机(与线上配置一样)上压测,第一次压了20w次,没有出现问题;接着又压了20w次,出现了内存溢出问题。java.lang.OutOfMemoryError: MetaspaceJVM配置JAVA_...

Java中BigInteger的各种方法详解_TYPHOON台风的博客-程序员秘密_biginteger import

顾名思义,BigInteger就是用于处理题目中涉及到大整数的加减乘除运算。文章目录·int 与 BigInteger之间的相互转化·错误案例:BigInteger 与 int 之间不能直接相互转化·BigInteger的常用方法·int 与 BigInteger之间的相互转化import java.math.BigInteger;public class Demo1{ public static void main(String[] args){ //int 与 BigIn

大数据学习之Zookeeper基础环境搭建(单机版)_学士_的博客-程序员秘密_zookeeper单机环境搭建

大数据环境搭建各个服务版本(该系列搭建版本)linux系统环境准备Zookeeper配置zookeeper日志目录配置各个服务版本(该系列搭建版本)ServiceVersionDownload Linkscala2.11.12-java1.8.0_181-zookeeper3.4.11http://archive.apache.org/dist/zookeeper/zookeeper-3.4.11/hadoop2.7.3http://archive

网页中遇到的src="data:image/png;base64,xxxx"知识点了解_Good_Luck_Kevin2018的博客-程序员秘密

大家可能注意到了,网页上有些图片的src或css背景图片的url后面跟了一大串字符,比如:1234567background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAYAAABIdFAMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAA...

随便推点

DataBinding从使用到放弃_weixin_33691700的博客-程序员秘密

DataBinding是谷歌官方发布的一个框架,基于页面数据直接绑定的mvvm框架,最初接触其时被惊艳到了,其可以在xml文件直接绑定数据,通过Binding类直接拿到有id的控件,页面对数据的监听可以直接修改数据就能改变页面的数据,即使页面有多处使用到。但我现在决定弃用他了。下面一一列出理由。1.编译延迟DataBinging的编译不是及时的,我们在xml文件写好布局后,并不能直接就可以找到...

Android应用开发之所有动画使用详解_rosy_dawn的博客-程序员秘密_在<%! %>中不能放置的是

转自【工匠若水 http://blog.csdn.net/yanbober 】1 背景Android系统提供了很多丰富的API去实现UI的2D与3D动画,最主要的划分可以分为如下几类:View Animation: 视图动画在古老的Android版本系统中就已经提供了,只能被用来设置View的动画。Drawable Animation: 这种动画(也叫F

mongo-connector导入数据到Elasticsearch_涂作权的博客的博客-程序员秘密

当前测试环境下Elasticsearch版本为2.3。不同版本的mongo-connector、elastic-doc-manager/elastic2-doc-manager所支持的Elasticsearch版本不同,安装时注意版本的选择。安装mongo-connector测试机上Python的默认版本为2.6,由于我采用anonacoda作为Python开发环境,Python默认版本2.7。故

解决Springboot使用FastJson 返回中文乱码的问题_jing12062011的博客-程序员秘密

两种方法:一、在启动类中覆写的configureMessageConverters方法里添加设置 @Override public void configureMessageConverters(List> converters) { super.configureMessageConverters(converters); // 1、需要先定义一个 convert 转换消息

什么是Hadoop以及Hadoop集群_普通网友的博客-程序员秘密_hadoop集群的作用

一、简单理解Hadoop是一个大象:一个hadoop集群主要包含三个主要的模块:Mapreduce,hdfs,yarn。mapreduce是一个分离在合并的计算框架,注意他不是一个集群,而是一个编程框架。hdfs是一个分布式文件系统,是一个分布式集群,用于存放数据。yarn集群是负责集群任务调度和运算资源管理的分布式集群。后面还会说到HBASE,这里先不提及。后面在来理解。二、HDFS集群比如一个很大的文件需要拆分成多个小的文件,然后每个小文件存放在不同的节点上,而这些小文件和大文件之间的映射

推荐文章

热门文章

相关标签