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

Web应用框架-Django应用基础

1. 认识Django

Django是一个用Python编写的开源高级Web框架,

旨在快速开发可维护和可扩展的Web应用程序。

使用Django框架的开发步骤:

1.选择合适的版本 2.安装及配置 3.生成项目结构 4.内容开发 5.迭代、上线、维护

Django官网:

Django documentation | Django documentation | Django

URL调度器:

URL调度器 | Django 文档 | Django

2. 安装Django框架

以管理员身份运行终端,并安装django框架:

pip3 install django -i https://pypi. tuna. tsinghua. edu.cn/simple/

 显示已安装的 Django 包的详细信息:

pip3 show django 

3. 新建并运行Django项目

3.1 新建

新建文件夹内 shift+鼠标右键 在此处打开 Powershell 窗囗(S)

新建一个项目,名称为 my_project :

django-admin startproject my_project 

3.2 运行

pycharm终端中运行新建好的项目:

 python manage.py runserver

4. Django项目结构

文件名用途
__init__.py空目录,表示该目录应该被视为一个 Python 包
asgi.py部署项目配置
settings.py项目的配置和设置,如数据库连接、时区、使用的应用程序等。
urls.py定义项目的 URL 分发器,即 URL 到视图函数的映射。
wsgi.py部署项目。
db.sqlite3sqlite数据库
manage.py命令行管理工具,执行各种 Django 管理任务

5. 编写Django视图

在setting中,配置访问路径范围:

DEBUG = True  是否支持debug运行

ALLOWED_HOSTS = ['*']    配置访问路径范围  " * " 表示任意

import os# SECURITY WARNING: don't run with debug turned on in production!DEBUG = True #是否支持debug运行ALLOWED_HOSTS = ['*'] #配置访问路径范围 *:任意

6. 开发新模块

6.1 创建新hello模块

在pycharm终端中输入:

python manage.py startapp hello

执行这个命令后,Django 会在项目目录下创建一个名为 hello 的新目录,

并在该目录中生成一组初始文件 

6.2 hello world!

urls.py:浏览器访问地址 

参数1:浏览器匹配的字符串

参数2:调用的模块的函数

# 配置文件
from django.contrib import admin
from django.urls import path, include
from hello.views import hello_world # 引入模块函数urlpatterns = [path('admin/', admin.site.urls),path('hello/', hello_world),
]

views.py:响应数据工具

由django提供,用于向浏览器返回数据

def hello_world(request): #业务函数

return HttpResponse("Hello World!") #向浏览器响应数据

from django.http import HttpResponse
def hello_world(request): #业务函数return HttpResponse("Hello World!") #向浏览器响应数据

7.多级路由

7.1 一级路由(test_django)

一级路由转二级路由:

from django.contrib import admin
from django.urls import path
from django.urls import includeurlpatterns = [path('admin/', admin.site.urls),path('hello/',include('hello.urls'))
]

7.2 二级路由(hello)

在hello文件下创建python文件,名为 urls ”

7.2.1 URL 配置

在 hello\urls.py 下,定义 URL 路由

from django.urls import path
from hello.views import hello_world
from hello.views import hello_chinaurlpatterns = [path('world/', hello_world,name='hello_world'),path('china/', hello_china,name='hello_china'),
]

7.2.2 响应数据工具

工具由django提供,用于向浏览器返回数据

from django.http import HttpResponsedef hello_world(request): #业务函数return HttpResponse("Hello World!") #向浏览器响应数据def hello_china(request):return HttpResponse("Hello China!")

小结:

url地址分为不同的级别,其优点:

1.地址目录结构清晰,便于维护

2.高内聚、低耦合:当某一模块被修改时,其他模块不受影响

8.函数视图

创建静态页面

新建 temple/ index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><h1>我的HTML标签</h1>
</body>
</html>

8.1 渲染HTML页面

8.1.1 views.py:

def hello_html(request):html = """<html><body><h1 style = "color:#f00;">Hello HTML!</h1></body>    </html>"""return HttpResponse(html)

 8.1.2 hello\urls.py:

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

8.1.3 代码效果:

 8.1.4 配置TEMPLATES设置

settings.py:

TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR / 'templates')],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]

8.2 article_list 函数

8.2.1 views.py:

def article_list(request,month):return HttpResponse('article:{}'.format(month))

8.2.2 hello\urls.py:

path('article/<int:month>/',article_list,name='article_list'),

8.2.3 代码效果:

8.3 search函数/获取get参数

8.3.1 views.py:

GET:get请求 ; get:获得数据

def search(request):name = request.GET.get('name','')print(name)return HttpResponse('查询成功')

8.3.2 hello\urls.py:

path('search/',search,name='search'),

8.3.3 代码效果:

8.4 render_to_string()函数

8.4.1 语法结构: 

render_to_string(template_name,context=None,request=None,using=None)

参数作用
template name模板名称
context模板上下文对象(字典dict)
request请求对象
using模板引擎名称(如:Jinja2)

8.4.2 views.py:

def render_str(request):page_name = 'index.html'html = render_to_string(template_name=page_name)return HttpResponse(html)#或者def render_str(request):return render(request,'index.html')

8.4.3 hello\urls.py:

path('render/str/',render_str,name='render_str'),

8.4.4 代码效果:

8.5 render()函数

8.5.1 语法结构:

参数作用
request请求对象
template name模板名称
context模板上下文对象(dict)
content typeMIME类型,默认为text/html
statusHTTP状态码
using模板引擎名称(如:Jinja2)

8.5.2 views.py:

def render_html(request):return render(request,'index.html')

8.5.3 hello\urls.py:

path('render/html/',render_html,name='render_html'),

8.5.4 代码效果:

相关文章:

Web应用框架-Django应用基础

1. 认识Django Django是一个用Python编写的开源高级Web框架&#xff0c; 旨在快速开发可维护和可扩展的Web应用程序。 使用Django框架的开发步骤&#xff1a; 1.选择合适的版本 2.安装及配置 3.生成项目结构 4.内容开发 5.迭代、上线、维护 Django官网&#xff1a; Djang…...

qt QMainWindow详解

一、概述 QMainWindow继承自QWidget&#xff0c;并提供了一个预定义的布局&#xff0c;将窗口分成了菜单栏、工具栏、状态栏和中央部件区域。这些区域共同构成了一个功能丰富的主窗口&#xff0c;使得应用程序的开发更加简单和高效。 二、QMainWindow的常用组件及功能 菜单栏&…...

第二单元历年真题整理

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 参考答案 1. A 2. A 3. A 4. D 5. D 6. D 解析&#xff1a; 栈和队列是两个不一样的结构&#xff0c;不能放在一起表示 7. B 8. C 解析&#xff1a; S --> A0 | B1 --> (S1 | 1) 0 | (S0 | 0)1 --> S10 | 10 | S…...

Ubuntu下载protobuf

1 安装依赖库 sudo apt-get install autoconf automake libtool curl make g unzip -y2 下载protobuf ProtoBuf 下载地址:https://github.com/protocolbuffers/protobuf/releases 如果要在 C 下使⽤ ProtoBuf&#xff0c;可以选择cpp.zip 其他语言选择对应的链接即可 希望支持…...

【算法优化】混合策略改进的蝴蝶优化算法

摘要 蝴蝶优化算法 (Butterfly Optimization Algorithm, BOA) 是一种新兴的智能优化算法&#xff0c;其灵感来自蝴蝶的觅食行为。本文基于经典BOA&#xff0c;通过引入混合策略进行改进&#xff0c;从而提高其在全局寻优和局部搜索中的性能。实验结果表明&#xff0c;改进的蝴…...

什么是标准差?详解

文章目录 一、什么是标准差&#xff1f;二、公式三、举个例子&#x1f330;参考 一、什么是标准差&#xff1f; 在统计学中&#xff0c;标准差&#xff08;Standard Deviation&#xff09;是用于衡量变量值围绕其平均值变化程度的指标。低标准差表示这些值通常接近平均值&…...

C++20中头文件syncstream的使用

<syncstream>是C20中新增加的头文件&#xff0c;提供了对同步输出流的支持&#xff0c;即在多个线程中可安全地进行输出操作&#xff0c;此头文件是Input/Output库的一部分。包括&#xff1a; 1.std::basic_syncbuf&#xff1a;是std::basic_streambuf的包装器(wrapper)&…...

判断特定时间点开仓的函数(编程技巧)

如何使用最新的MQL4语言创建并应用一个判断当前是否可以开启或增加交易仓位的函数。通过详细讲解函数的代码实现、核心功能及其在实际交易策略中的调用方法。 函数代码 以下是一个用MQL4编写的函数&#xff0c;用于检测在特定时间点是否可以开仓或增仓。 extern int MagicNumb…...

如何新建一个React Native的项目

要新建一个 React Native 项目&#xff0c;你可以使用 React Native 官方推荐的工具 React Native CLI 或者 Expo。两者的区别在于&#xff1a;React Native CLI 提供更多对原生代码的访问权限&#xff0c;适合构建复杂的应用&#xff1b;而 Expo 是一个开发工具链&#xff0c;…...

学习--图像信噪比

目录 图像信噪比 图像信噪比 图像信噪比的计算公式&#xff1a; 其中&#xff0c; M M M和 N N N分别表示图像长度和宽度上的像素数。 f ( i , j ) f(i,j) f(i,j) 和 g ( i , j ) g(i,j) g(i,j)分别是原始图像和去噪后的图像在点 ( i , j ) (i,j) (i,j)处的像素值。 信噪…...

【2024CANN训练营第二季】使用华为云体验AscendC_Sample仓算子运行

环境介绍 NPU&#xff1a;Ascend910B2 环境准备 创建Notebook 华为云选择&#xff1a;【控制台】-【ModelArts】 ModelArts主页选择【开发生产】-【开发空间】-【Notebook】 页面右上角选择【创建Notebook】 选择资源 主要参数 规格&#xff1a;Ascend: 1*ascend-snt…...

使用 NumPy 和 Matplotlib 实现交互式数据可视化

使用 NumPy 和 Matplotlib 实现交互式数据可视化 在数据分析中&#xff0c;交互式可视化可以更好地帮助我们探索和理解数据。虽然 Matplotlib 是静态绘图库&#xff0c;但结合一些技巧和 Matplotlib 的交互功能&#xff08;widgets、event handlers&#xff09;&#xff0c;我…...

TCP 攻击为何在 DDoS 攻击中如此常见

分布式拒绝服务攻击&#xff08;Distributed Denial of Service, DDoS&#xff09;是一种常见的网络攻击手段&#xff0c;通过大量请求使目标服务器过载&#xff0c;导致合法用户无法访问服务。在众多 DDoS 攻击类型中&#xff0c;TCP 攻击尤为常见。本文将探讨 TCP 攻击在 DDo…...

未来汽车驾驶还会有趣吗?车辆动力学系统简史

未来汽车驾驶还会有趣吗&#xff1f;车辆动力学系统简史 本篇文章来源&#xff1a;Schmidt, F., Knig, L. (2020). Will driving still be fun in the future? Vehicle dynamics systems through the ages. In: Pfeffer, P. (eds) 10th International Munich Chassis Symposiu…...

LCD手机屏幕高精度贴合

LCD手机屏幕贴合&#xff0c;作为智能手机生产线上至关重要的一环&#xff0c;其质量直接关乎用户体验与产品竞争力。这一工艺不仅要求屏幕组件间的无缝对接&#xff0c;达到极致的视觉与触觉效果&#xff0c;还需确保在整个生产过程中&#xff0c;从材料准备到最终成品&#x…...

15_卸载操作

在之前我们就提到&#xff0c;首次渲染之后&#xff0c;后续如果再调用 render 函数时&#xff0c;传递的 vnode 为 null 则表示是卸载。 当时我们是直接通过执行 container.innerHTML ‘’ 来实现的&#xff0c;但是这样做会有以下几个问题&#xff0c;如下&#xff1a; 容…...

ONLYOFFICE 文档8.2版本已发布:PDF 协作编辑、改进界面、性能优化等更新

ONLYOFFICE 在线编辑器最新版本已经发布&#xff0c;其中包含30多个新功能和500多个错误修复。阅读本文了解所有更新。 关于 ONLYOFFICE 文档 ONLYOFFICE 是一个开源项目&#xff0c;专注于高级和安全的文档处理。坐拥全球超过 1500 万用户&#xff0c;ONLYOFFICE 是在线办公领…...

redis的string是怎么实现的

Redis 的 String 类型是最基本的数据类型&#xff0c;底层通过多种方式实现&#xff0c;能够存储字符、整数、浮点数等各种形式的值。String 数据结构的实现基于 Redis 的简单动态字符串&#xff08;SDS&#xff09;&#xff0c;同时在处理不同的数据类型时也进行了优化。 1. …...

基于STM32设计的智能婴儿床(华为云IOT)(244)

文章目录 一、前言1.1 项目介绍【1】开发背景【2】项目实现的功能【3】项目硬件模块组成【4】ESP8266工作模式配置1.2 设计思路【1】整体设计思路【2】整体构架【3】上位机开发思路1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】摘要1.4 开发工具的选择【1…...

html+css+js实现Notification 通知

实现效果&#xff1a; 代码实现&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Notif…...

【Linux】拆分详解 - 常见指令和权限理解

文章目录 前言一、常用指令1. 基本查看与路径跳转1.1文件与目录1.2 ls 指令&#xff08;显示文件&#xff09;1.3 pwd &#xff08;查看当前目录&#xff09;1.4 clear &#xff08;清屏&#xff09;1.5 whoami &#xff08;查看用户名&#xff09;1.6 cd&#xff08;跳转路径&…...

UniHttp 框架,请求http接口

项目案例下载地址: https://download.csdn.net/download/jinhuding/89902024 1.快速开始 2.1引入依赖 <dependency><groupId>io.github.burukeyou</groupId><artifactId>uniapi-http...

C++20中头文件ranges的使用

<ranges>是C20中新增加的头文件&#xff0c;提供了一组与范围(ranges)相关的功能&#xff0c;此头文件是ranges库的一部分。包括&#xff1a; 1.concepts: (1).std::ranges::range:指定类型为range&#xff0c;即它提供开始迭代器和结束标记(it provides a begin iterato…...

设计一个html+css+js的注册页,对于注册信息进行合法性检测

综合使用HTML、JavaScript和CSS进行注册页面设计&#xff0c;实现以下若干功能&#xff1a; 注意整个页面的色调和美观使用FramesetTable布局&#xff08;div也可&#xff09;对用户ID和用户名、口令不符合条件及时判断对口令不一致进行及时判断&#xff08;34的及时判断&#…...

语音识别——使用Vosk进行语音识别

文章目录 前言一、Vosk模型1.准备好所需要的语音包2.下载使用 二、使用示例1.文件读取示例2.结合麦克风演示 总结 前言 如何编译Vosk请参照之前的文章&#xff0c;ubuntu编译kaldi和vosk Vosk是语音识别开源框架&#xff0c;支持二十种语言 - 中文&#xff0c;英语&#xff0…...

element ui中el-image组件查看图片的坑

比如说上传组件使用el-image-viewer组件去看,如果用错了,你会发现,你每次只能看一张图片 <template><div><el-upload action="#" list-type="picture-card" :auto-upload="false" :file-list="fileList"@change=&qu…...

LabVIEW水质监测系统

在面对全球性的海洋污染问题时&#xff0c;利用先进技术进行水质监测成为了保护海洋环境的关键手段之一。开发了一种基于LabVIEW的海洋浮标水质监测系统&#xff0c;该系统能够实时监测并评估近海水域的水质状况&#xff0c;旨在为海洋保护和污染防治提供科技支持。 项目背景 …...

SpringMVC之 文件上传和下载

1. 文件上传 1.1 前端注意事项 文件上传操作&#xff0c;前端的表单项需要如下三项设置&#xff1a; &#xff08;1&#xff09;input标签的type属性应设置为file&#xff0c;并且注意不要在input标签中设置value属性&#xff0c;因为这可能导致文件上传不成功&#xff1b; …...

LeetCode Hot 100:二分查找

LeetCode Hot 100&#xff1a;二分查找 35. 搜索插入位置 思路 1&#xff1a;lower_bound class Solution { public:int searchInsert(vector<int>& nums, int target) {return lower_bound(nums.begin(), nums.end(), target) - nums.begin();} };思路 2&#xf…...

打包方式-jar和war的区别

1、jar包 JAR包是类的归档文件&#xff0c;与平台无关的文件格式&#xff0c;其实jar包就是java的类进行编译生成的class文件进行打包的压缩包。 JAR以ZIP文件格式为基础&#xff0c;与ZIP不同的是&#xff0c;JAR不仅用于压缩和发布&#xff0c;还用于部署和封装库、组件和插…...

wordpress的登录界面/爱站关键词挖掘查询工具

基础镜像 先运行一个启动ssh服务的基础镜像 docker run -d -i -t --privilegedtrue --nametest01 cdh/centos7:ssh1.0 /usr/sbin/sshd -D上传安装包 将cm和jdk安装包上传到容器内 docker cp /mnt/usb1/JDK/jdk-8u74-linux-x64.rpm test01:/usr/tmp/ docker cp /mnt/usb1/CM…...

好的淘客网站/会计培训机构

SSJ集成 一、三大框架 1.SSH Struts/Struts2 Spring Hibernate 2.SSJ Struts2 Spring JPASpringMVC Spring JPASpringMVC Spring Data JPA 3.SSM SpringMVC Spring MyBatis 二、集成三大框架的步骤 导包 -> domain-> jdbc.properties ->dataSource …...

哪里可以免费做网站/神马站长平台

题意&#xff1a;就是一个快速排序&#xff0c;理解快速排序就没啥了&#xff1b; 代码&#xff1a; #include <stdio.h>void swap(int a[], int i, int j) {int t a[i];a[i] a[j];a[j] t; }int partition(int a[], int p, int r) {int i p;int j r 1;int x a[p…...

ps做 网站教程/优化大师官方免费

实现两个N*N矩阵的乘法&#xff0c;矩阵由一维数组表示 代码如下&#xff1a; //实现两个N*N矩阵的乘法&#xff0c;矩阵由一维数组表示。 #include<iostream> using namespace std;#define size 2int *multi(int *a, int *b, int N){int i, j, k, temp;int *c (int *)…...

网站备案后怎么做实名认证/播放量自助下单平台

在学习UCOS过程中&#xff0c;想通过串口中断将接收到的数据放到消息队列中去&#xff0c;编写代码如下&#xff1a;#include "led.h"#include "delay.h"#include "key.h"#include "sys.h"#include "usart.h"#include "…...

网站建设服务定制/免费私人网站建设平台

尝试用Python实现一些简单的算法和数据结构 之前的算法和数据结构基本都是用Swift写的&#xff0c;现在尝试用Python实现一些简单的算法和数据结构。 update 20160704 准备加入《剑指offer》的习题python实现,以及机器学习过程中的一些算法 update 20160717 加入leetcode部分 #…...