当前位置: 首页 > news >正文

Django开发实例总结(入门级、4.2.6、详细)

目录

概述

Django的核心组件包括

Django的项目结构

创建工程(4.2.6)

实例一:Hello world

实例二:访问一个自定义主页

实例三:通过登录跳转到主页

实例四:主页添加静态文件,包含js、css、图片

实例五:访问api多级路径,传入json参数计算结果


概述

Django是一个用于构建Web应用程序的高级Python Web框架。它遵循了MVC(Model-View-Controller)的软件设计模式,并采用了MTV(Model-Template-View)的变种。

模型(Model)、模板(Template)、视图(Views)。

Django的核心组件包括

  1. Models(模型):模型定义了应用程序中使用的数据结构和数据库表的结构。它们通过Django的ORM(对象关系映射)与数据库进行交互。通过定义模型类,您可以创建数据库表以及与之相关的字段和方法。Django的ORM(对象关系映射)提供了一个简单的方式来操作数据库,无需编写原始的SQL查询语句。

  2. Views(视图):视图负责处理HTTP请求,并返回HTTP响应。它们从模型中获取数据,并将其传递给模板进行渲染。在Django中,视图函数或基于类的视图处理来自URL的请求,并从模型层获取所需的数据,然后将其传递给模板层进行渲染。视图可以返回HTML页面、JSON数据或其他响应类型。

  3. Templates(模板):模板层负责生成最终的用户界面。模板是用于呈现数据的HTML文件。它们允许您将动态数据嵌入到静态HTML中,并使用Django的模板语言来处理逻辑和控制流。Django使用模板引擎将动态数据与静态HTML代码分离。您可以在模板中使用变量、循环、条件语句等,以便根据需要动态生成页面

  4. URLconf(URL配置):URLconf负责将URL映射到视图函数。它定义了URL模式和对应的视图函数。URL调度器(或路由)将URL映射到相应的视图函数或类。在Django中,您可以通过在URL配置文件中定义URL模式来设置路由规则。URL调度器根据请求的URL确定要执行的视图,帮助 Django 确定哪个视图应该处理特定的 URL 请求

  5. Middleware(中间件):中间件是Django的请求/响应处理机制的一部分。它可以在请求到达视图之前或响应发送给客户端之前执行特定的操作。中间件是位于Django请求和响应处理过程中的一个插件。例如,中间件可以用于身份验证、请求日志记录、跨站点请求伪造(CSRF)防护等

  6. Forms(表单):Django 表单帮助您创建 HTML 表单,并处理用户提交的数据。它们可以验证输入数据,并将其转换为模型对象。表单可以验证用户输入并将其保存到数据库中。

  7. Admin(管理后台):Django提供了一个强大的管理后台,可以轻松地管理数据库模型和数据。自动创建的管理界面允许管理员管理数据库中的数据,包括添加、编辑和删除记录。

  8. 静态文件处理:Django 提供了管理和服务静态文件(如 CSS、JavaScript)的功能。

此外,Django还包括许多其他组件和功能,如国际化、安全性等。

Django的项目结构

myproject/manage.pymyproject/__init__.pysettings.pyurls.pywsgi.pymyapp/migrations/__init__.py__init__.pyadmin.pyapps.pymodels.pytests.pyviews.pyurls.pytemplates/myapp/index.html
  • manage.py:用于管理Django项目的命令行工具。
  • myproject/:项目的主目录,包含项目的配置和URL设置。
  • myapp/:应用程序的目录,包含模型、视图、模板等。
  • migrations/:包含数据库迁移相关的文件。
  • admin.py:包含管理后台的配置。
  • models.py:包含应用程序的模型定义。
  • views.py:包含视图函数的定义。
  • urls.py:用于定义应用程序的URL模式。
  • templates/:包含HTML模板文件。
  • 其他文件:__init__.pyapps.pytests.py等。

这只是一个基本的Django项目结构示例,可以根据需要进行扩展和修改。

创建工程(4.2.6)

实例一:Hello world

1. 确保您已经安装了Django。如果尚未安装,请在命令行中运行以下命令:

pip install django

2. 创建一个新的Django项目。在命令行中导航到您想要创建项目的目录,并运行以下命令:

django-admin startproject myproject

3. 进入项目目录:

cd myproject

4. 创建一个新的Django应用程序。在命令行中运行以下命令:

python manage.py startapp myapp

5. 在myproject/myproject/settings.py文件中,找到ALLOWED_HOSTS并将其更改为以下内容:

ALLOWED_HOSTS = ['*']

* 表示允许任何主机访问您的Django应用程序,在生产环境中,您应该将ALLOWED_HOSTS设置为您信任的主机名或IP地址,以限制访问您的应用程序的来源 

6. 在myproject/myproject/urls.py文件中,添加以下代码:

from django.urls import path, includeurlpatterns = [path('', include('myapp.urls')),
]

7. 在myproject/myapp目录中,创建一个新的urls.py文件,并添加以下代码:

from django.urls import path
from . import viewsurlpatterns = [path('', views.index, name='index'),
]

8. 在myproject/myapp目录中,创建一个新的views.py文件,并添加以下代码:

from django.http import HttpResponsedef index(request):return HttpResponse("Hello, world!")

9. 返回到项目根目录,运行以下命令启动服务器:

python manage.py runserver 0.0.0.0:10808

10. 打开浏览器,并访问 http://localhost:10808/ ,您将看到 "Hello, world!" 的消息。

实例二:访问一个自定义主页

1. 确保在settings.py文件中,TEMPLATES设置中添加了应用程序的模板目录:

import os.pathTEMPLATES = [{...'APP_DIRS': True,'DIRS': [os.path.join(BASE_DIR, 'myapp', 'templates')],...},
]

这将告诉Django在`myapp`应用程序的`templates`目录中查找模板文件。

2. 在urls.py文件中正确配置了URL模式。如果您的应用程序位于项目的根目录下,可以将以下代码添加到urls.py文件中:

from django.urls import path
from myapp.views import indexurlpatterns = [path('', index, name='index'),   # ''标示没有地址访问默认目录index# 其他URL模式
]

''标示没有地址访问默认目录index 

确保`myapp.views`导入了正确的视图函数,并将根URL与`index`视图函数关联起来。

3. 确保在项目的settings.py文件中的INSTALLED_APPS设置中添加了应用程序

INSTALLED_APPS = [...'myapp',...
]

这将告诉Django加载`myapp`应用程序。

4. 进入myapp目录下创建文件夹templates

5. 编写index.html代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>这里是主页</title><style>h1 { color:red }</style>
</head>
<body><h1>这里是主页</h1>
</body>
</html>

6.  打开浏览器,并访问 http://localhost:10808/ 

实例三:通过登录跳转到主页

1. 创建一个名为login.html的模板文件

<html>
<head><title>Login</title>
</head>
<body><h1>Login</h1>{% if error_message %}<p>{{ error_message }}</p>{% endif %}<form method="post" action="{% url 'login' %}">{% csrf_token %}<label for="username">用户:</label><input type="text" id="username" name="username"><br><br><label for="password">密码:</label><input type="password" id="password" name="password"><br><br><input type="submit" value="登录"></form>
</body>
</html>

2. 在views.py文件中,您需要定义一个处理登录页面请求的视图函数

#! /usr/bin/env python
# -*- coding: utf-8 -*-from django.shortcuts import render, redirect
from django.http import HttpResponse# Create your views here.
def login(request):if request.method == 'POST':username = request.POST.get('username')password = request.POST.get('password')if username == 'admin' and password == '123456':# 登录成功,重定向至主页return redirect('index')else:# 登录失败,返回错误消息error_message = '用户名或密码错误'return render(request, 'login.html', {'error_message': error_message})else:return render(request, 'login.html')def index(request):#return HttpResponse("Hello, world!")return render(request,'index.html')

3. 在urls.py文件中,需要将URL模式与登录视图函数关联起来,并指定默认访问地址为登录页。在urls.py文件中添加以下代码

from django.urls import path
from . import viewsurlpatterns = [path('', views.login, name='login'),path('index/', views.index, name='index'),
]

4. 创建一个名为index.html的模板文件

<html>
<head><title>主页</title>
</head>
<body><h1>欢迎来到主页!</h1><p>这是主页的内容.</p>
</body>
</html>

5.  打开浏览器,并访问 http://localhost:10808/ 

实例四:主页添加静态文件,包含js、css、图片

1. 在settings.py文件中,配置静态文件 STATIC_URLSTATICFILES_DIRS

STATIC_URL = 'static/'STATICFILES_DIRS = [os.path.join(BASE_DIR, 'myapp', 'static'),                                                                                                                                           
]

2. myapp目录下创建static文件夹,static文件夹下分别创建js目录、css目录、images目录

3. 创建css文件styles.css

body {background-color: #f1f1f1;font-family: Arial, sans-serif;
}h1 {color: blue;
}p {font-size: 16px;
}

在这个示例中,CSS代码设置了一些基本的样式,如页面背景颜色、标题颜色和段落字体大小

主页引用

<link rel="stylesheet" type="text/css" href="{% static 'css/styles.css' %}">

4. 创建js文件script.js

console.log("你好, JavaScript!");

F12可查看控制台console日志

5. 创建图片logo.png

6. 主页完整代码

<!DOCTYPE html>
<html>
<head><title>我的主页</title><!--{% load static %}--><link rel="stylesheet" type="text/css" href="{% static 'css/styles.css' %}">
</head>
<body><h1>欢迎来到我的主页</h1><img src="{% static 'images/logo.png' %}" alt="Logo"><p>这是主页内容.</p><script src="{% static 'js/script.js' %}"></script>
</body>
</html>

7. 确保在使用static标签之前,始终在模板文件的顶部添加{% load static %}标签,以确保Django正确加载和解析静态文件模板标签.

8.  打开浏览器,并访问 http://localhost:10808/ 

实例五:访问api多级路径,传入json参数计算结果

1. 添加urls.py代码

path('api/add', views.add_numbers, name='add_numbers'),

2. 添加views.py代码

import json
from django.views.decorators.csrf import csrf_exempt
from django.http import JsonResponse@csrf_exempt
def add_numbers(request):if request.method == 'POST':try:data = json.loads(request.body)print(111, data)num1 = int(data.get('number1'))num2 = int(data.get('number2'))result = num1 + num2response_data = {'result': result}return JsonResponse(response_data)except (ValueError, TypeError):response_data = {'错误': '输入错误'}return JsonResponse(response_data, status=400)else:response_data = {'错误': '方法错误'}return JsonResponse(response_data, status=405)

禁用CSRF保护:这不是在生产环境中推荐的做法。在开发阶段,您可以在视图函数上使用@csrf_exempt装饰器来禁用CSRF保护。

3. 打开谷歌插件postwoman插件访问http://172.16.12.128:10808/api/add

 

相关文章:

Django开发实例总结(入门级、4.2.6、详细)

目录 概述 Django的核心组件包括 Django的项目结构 创建工程&#xff08;4.2.6&#xff09; 实例一&#xff1a;Hello world 实例二&#xff1a;访问一个自定义主页 实例三&#xff1a;通过登录跳转到主页 实例四&#xff1a;主页添加静态文件&#xff0c;包含js、css、…...

Variations-of-SFANet-for-Crowd-Counting可视化代码

前文对Variations-of-SFANet-for-Crowd-Counting做了一点基础梳理&#xff0c;链接如下&#xff1a;Variations-of-SFANet-for-Crowd-Counting记录-CSDN博客 本次对其中两个可视化代码进行梳理 1.Visualization_ShanghaiTech.ipynb 不太习惯用jupyter notebook, 这里改成了p…...

所有的人机交互都存在不匹配现象

从接受理论的角度来看&#xff0c;就像夫妻一样&#xff0c;所有的人机交互都存在不匹配的现象。 接受理论是一个解释人们如何学习和接受信息的心理模型。该理论认为&#xff0c;当人们学习新信息时&#xff0c;他们会将其与自己已有的知识和经验联系起来&#xff0c;以便更好地…...

LED数码管的静态显示与动态显示(Keil+Proteus)

前言 就是今天看了一下书上的单片机实验&#xff0c;发现很多的器件在Proteus中都不知道怎么去查找&#xff0c;然后想做一下这个实验&#xff0c;尝试能不能实现&#xff0c;LED数码管的两个还可以实现&#xff0c;但是用LED点阵显示器的时候他那个网络标号不知道是什么情况&…...

webGL编程指南 第五章 TexturedQuad_Clamp_Mirror

我会持续更新关于wegl的编程指南中的代码。 当前的代码不会使用书中的缩写&#xff0c;每一步都是会展开写。希望能给后来学习的一些帮助 git代码地址 &#xff1a;空 上一章节中我们学习了如何使用varyting变量绘制图片&#xff0c;本章节&#xff0c;我们学习texParameter…...

【Azure】存储服务:Azure 的存储账户

文章目录 一、前提知识&#xff08;建议了解&#xff09;二、介绍 Azure 存储帐户三、使用 Microsoft Azure 门户创建存储帐户 一、前提知识&#xff08;建议了解&#xff09; 在每一个云厂商中&#xff0c;都有自身的云存储&#xff0c;也有根据不同功能进行区分的不同类型的…...

高等数学啃书汇总重难点(十一)曲线积分与曲面积分

依旧是公式极其复杂恶心的一章&#xff0c;建议是&#xff1a;掌握两种线面积分的计算套路即可&#xff0c;和第8章一样属于同济版教材中最不重要的章节&#xff0c;不会对底层理解做过多考察~ 1.弧长曲线积分的几何意义 2.弧长曲线积分的定义和性质 3.弧长曲线积分的计算方式 …...

【算法专题】双指针—盛最多水的容器

一、题目解析 分析这个题目不难得出一个容积公式 二、算法原理 解法一&#xff1a;暴力枚举&#xff08;超时&#xff09; 套用上述的容积公式&#xff0c;使用两个for循环来枚举出所有可能的情况&#xff0c;再挑出最大值即可&#xff0c;但是这种写法会超时&#xff0c;导致…...

java入门,程序=数据结构+算法

一、前言 在学习java的时候&#xff0c;我印象最深的一句话是&#xff1a;程序数据结构算法&#xff0c;对于写java程序来说&#xff0c;这就是java的入门。 二、java基本数据结构与算法 1、数据类型 java中的数据类型8种基本数据类型&#xff1a; 整型 byte 、short 、int…...

9.MySQL索引的操作

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 索引操作 查询索引 创建主键索引 唯一索引的创建 普通索引的创建 全文索引的创建 删除索引 索引创建原则 索引操作 查询索引 第一种方法&#xff1a; show keys from 表名\G 我们了解其中几个就好。 第二种方法…...

大型加油站3d全景虚拟现实展示平台实现全方位立体呈现

近年来&#xff0c;随着国民经济的快速发展&#xff0c;交通基础设施的不断改善&#xff0c;机动车保有量的持续飙升&#xff0c;以至于加油站的建设数量和密度也在不断扩张。加油站作为人流量大且常见的城市场景&#xff0c;对加油站进行安全防范措施具有非常重要的安全意义。…...

Reading:Deep dive into the OnPush change detection strategy in Angular

原文连接&#xff1a;IndepthApp 今天深入阅读并总结Angualr中onPush更新策略。 1. 两种策略 & whats Lview&#xff1f; Angular 实现了两种策略来控制各个组件级别的更改检测行为。这些策略定义为Default和OnPush&#xff1a; 被定义为枚举&#xff1a; export enum…...

野火霸天虎 STM32F407 学习笔记_1 stm32介绍;调试方法介绍

STM32入门——基于野火 F407 霸天虎课程学习 前言 博主开始探索嵌入式以来&#xff0c;其实很早就开始玩 stm32 了。但是学了一段时间之后总是感觉还是很没有头绪&#xff0c;不知道在学什么。前前后后分别尝试了江协科技、正点原子、野火霸天虎三次 stm32 的课程学习。江协科…...

@reduxjs/toolkit配置react-redux解决createStore或将在未来被淘汰警告

通常 我们用redux都需要通过 createStore 但目前 你去用它 基本都会被划线 甚至有点厉害的的编辑器 他会直接告诉你这个东西基本快被弃用了 这个应该大家都知道 最好不要用已经被明确未来或弃用的语法 因为一旦弃用这个系统就需要维护 而且说 一般会被淘汰的语法 本身也就是有…...

致敬1024天前的自己

今早打开手机就收到了来自CSDN的消息&#xff0c;哦&#xff0c;距离我发表第一篇技术博客已经过去1024个日夜了。 我第一次发技术博客是我大二做完我第一个网站时写的。因为网站需要上线服务器&#xff0c;涉及到不少linux相关的知识&#xff0c;我在自学的过程中走了不少弯路…...

〖Python网络爬虫实战㊱〗- JavaScript 网站加密和混淆

订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,订阅本专栏前必读关于专栏〖Python网络爬虫实战〗转为付费专栏的订阅说明作者:爱吃饼干的小白鼠。Python领域优质创作者,2022年度…...

基于单片机设计的电子柜锁

一、前言 随着现代社会的不断发展&#xff0c;电子柜锁的应用越来越广泛。传统的机械柜锁存在一些不便之处&#xff0c;例如钥匙容易丢失、密码容易泄露等问题。设计一款基于单片机的电子柜锁系统成为了一个有趣而有意义的项目。 该电子柜锁系统通过电磁锁作为柜锁的开关&…...

Windows安装tensorflow-gpu=1.14.0CUDA=10.0cuDNN=7.4 (多版本CUDA共存)

文章目录 0. 前置说明1. 查看版本对应关系2. 安装 cuda3. 安装 cudnn4. 添加环境变量5. 安装 tensorflow 0. 前置说明 本机&#xff08;Windows 11&#xff09;已安装CUDA 11.7 使用命令查看显卡驱动&#xff1a; nvidia-smi这里显示的CUDA Version: 11.7说明支持安装11.7版本…...

CodeWhisperer 初体验

文章作者&#xff1a;1颗 orange 最近用了一个叫 CodeWhisperer 的插件&#xff0c;这个软件对于来说开发人员&#xff0c;插件有好多实用的功能&#xff0c;编码更高效&#xff0c;代码质量也提升了很多。 CodeWhisperer 简介 CodeWhisperer 是亚⻢逊出品的一款基于机器学习…...

HNU-算法设计与分析-讨论课1

第一次小班讨论 &#xff08;以组为单位&#xff0c;每组一题&#xff0c;每组人人参与、合理分工&#xff0c;ppt中标记分工&#xff0c;尽量都有代码演示&#xff09; 1.算法分析题 2-10、2-15(要求&#xff1a;有ppt&#xff08;可代码演示&#xff09;) 2.算法实现题 2-4、…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...