Web应用框架-Django应用基础

news2024/11/25 0:55:47

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 include

urlpatterns = [
    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_china

urlpatterns = [
    path('world/', hello_world,name='hello_world'),
    path('china/', hello_china,name='hello_china'),
]

7.2.2 响应数据工具

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

from django.http import HttpResponse

def 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 代码效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2223692.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开源表单生成器OpnForm

什么是 OpnForm &#xff1f; OpnForm 是一个开源的表单构建工具&#xff0c;旨在简化创建自定义表单的过程&#xff0c;特别适合无编码知识的用户。它通过人工智能优化表单创建流程&#xff0c;支持多种用途&#xff0c;如联系人表单、调查表等。OpnForm 提供了一个直观的拖放…

最优化方法-无约束优化算法(最速下降法)matlab实现

一、前言 最速下降法 &#xff0c;又称为梯度法&#xff0c;是一种无约束求解多元函数极小值的方法。最速下降法的起源可以追溯到19世纪&#xff0c;最早由数学家Cauchy在1847年提出。随着计算机技术的发展&#xff0c;最速下降法在20世纪50年代逐渐应用于各种优化问题&#x…

BD数字化装备车场:RFID技术的突破之道

传统的车库管理流程主要依赖手工方式&#xff0c;这无疑降低了作业效率&#xff0c;尤其在任务高峰期或紧急情况下&#xff0c;车库进出口的交通堵塞问题尤为突出。随着2023年的到来&#xff0c;我国相继发布了《交通强国建设纲要》与《数字中国建设整体布局规划》等关键政策文…

Uni-App-01

HBuilder安装卸载 安装 下载HBuilder最新版 解压到安装目录&#xff0c;路径中不要有中文和空格 在桌面上增加快捷方式 卸载 执行reset.bat 删除HBuilder文件夹&#xff08;如果提示文件被占用&#xff0c;杀死相关进程再删除&#xff09; 夜神模拟器安装 安装 下…

Flutter项目打包ios, Xcode 发布报错 Module‘flutter barcode_scanner‘not found

报错图片 背景 flutter 开发的 apple app 需要发布新版本&#xff0c;但是最后一哆嗦碰到个报错&#xff0c;这个小问题卡住了我一天&#xff0c;之间的埪就不说了&#xff0c;直接说我是怎么解决的&#xff0c;满满干货 思路 这个报错 涉及到 flutter_barcode_scanner; 所…

智能园艺:Spring Boot植物健康系统

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理植物健康系统的相关信息成为必然。开发合适…

《面向对象系统分析与设计》三级项目

文章目录 一、项目总体要求<设计模式应用>第一次文档要求第二次文档要求 二、示例第一次文档 - 设计原则应用1、题目描述2、设计:(1&#xff09;优化理由陈述(2&#xff09;类图(3)实现代码 第二次文档 - 设计模式应用1、题目描述2、设计:(1) 优化理由陈述(2&#xff09;…

PostGis空间(下):空间连接与空间索引

目录 1、简介2、空间连接3、空间索引3.1 索引操作3.2 空间索引的工作原理3.2.1 R-Tree 3.3 空间索引函数3.4 仅索引查询3.5 ANALYZE3.6 VACUUMing3.7 函数列表 PS 1024到啦&#xff01;&#xff01;&#xff01; 先祝各位程序员或者想成为程序员正在奋斗中的伙伴1024程序员节快…

pdf免费压缩软件 pdf文件压缩免费软件 软件工具方法

pdf文件压缩免费软件&#xff1f;对于提升日常工作效率至关重要。在繁忙的工作流程中&#xff0c;寻找一种既高效又合适的压缩策略显得尤为重要。那么&#xff0c;我们该如何优化工作流程呢&#xff1f;在职场中&#xff0c;良好的开端是制定一套清晰的工作方案。只有明确了目标…

Konva 组,层级

代码&#xff1a; <template><div class"rect"><div class"header"> <!-- <el-button type"primary" click"show">展示</el-button>--> <!-- <el-button type"success&quo…

算法设计与分析——动态规划

1.动态规划基础 1.1动态规划的基本思想 动态规划建立在最优原则的基础上&#xff0c;在每一步决策上列出可能的局部解&#xff0c;按某些条件舍弃不能得到最优解的局部解&#xff0c;通过逐层筛选减少计算量。每一步都经过筛选&#xff0c;以每一步的最优性来保证全局的最优性…

UniHttp 框架,请求http接口

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

react18中使用redux管理公共数据仓库实现数据immutable更新

Immutable.js出自Facebook&#xff0c;是最流行的不可变数据结构的实现之一。它实现了完全的持久化数据结构&#xff0c;使用结构共享。所有的更新操作都会返回新的值&#xff0c;但是在内部结构是共享的&#xff0c;来减少内存占用。Immutablejs官网 在上一篇介绍redux的文章&…

Docker 部署 JDK11 图文并茂简单易懂

部署 JDK11 ( Docker ) [Step 1] : 下载JDK11 - JDK 11 | Oracle 甲骨文官网 [Step 2] : jdk11上传服务器/root/jdk11 可自行创建文件夹 进入目录 /root/jdk11 解压文件 tar -zxvf jdk-11.0.22_linux-x64_bin.tar.gz解压后 进入 /root/jdk11/jdk-11.0.22 创建 jre 文件 ./bi…

基于RK3588/算能BM1684 AI盒子:综合视频智能AI分析系统建设方案(三)安全帽、睡岗检测、电瓶车、吸烟场景

安全帽反光衣检测算法 功能说明 安全帽反光衣检测是指在监控场景中预先设定监测区域&#xff0c;在区域内人员没有穿戴安全帽反光衣的现象&#xff0c;及时触发告警。检测目标在1080p图像中的分辨率大小不小于30*30像素。 推荐场景 场景要求&#xff1a;可室内外使用&#x…

VS无法安装Win10SDK_10.0.2200,快捷方法

Visual Studio无法安装Win10SDK_10.0.2200&#xff0c;我在安装VS2019、2022提示&#xff0c;软件就不能编译。 因为之前安装过VS软件&#xff0c;重新安装软件提示“无法安装”。 原因 之前安装在D盘&#xff0c;现在没有D盘了 说明 因为电脑第一次安装VS&#xff0c;会自动安…

安全见闻---清风

注&#xff1a;本文章源于泷羽SEC&#xff0c;如有侵权请联系我&#xff0c;违规必删 学习请认准泷羽SEC学习视频:https://space.bilibili.com/350329294 安全见闻1 泷哥语录&#xff1a;安全领域什么都有&#xff0c;不要被表象所迷惑&#xff0c;无论技术也好还是其他方面…

Python爬虫教程:从入门到精通

Python爬虫教程&#xff1a;从入门到精通 前言 在信息爆炸的时代&#xff0c;数据是最宝贵的资源之一。Python作为一种简洁而强大的编程语言&#xff0c;因其丰富的库和框架&#xff0c;成为了数据爬取的首选工具。本文将带您深入了解Python爬虫的基本概念、实用技巧以及应用…

若依RuoYi-Vue 定时任务 速学

1.若依定时任务模块&#xff08;ruoyi-quartz&#xff09; 那么从一个简单的入门示例开始&#xff0c;掌握定时任务的使用吧&#xff01; 2. 入门示例&#xff08;学会制作一个简单定时任务&#xff09; 首先打开定时任务模块中的task包&#xff0c;这里已经有一个已经写好的R…

51单片机——OLED显示图片

取模软件&#xff1a;链接:https://pan.baidu.com/s/1UcrbS7nU4bsawNxsaaULfQ 提取码:gclc 1、如果图片大小和格式不合适&#xff0c;可以先用Img2Lcd软件进行调整图片大小&#xff0c;一般取模软件使用的是.bmp图片&#xff0c;可以进行输出.bmp格式。软件界面如下&#xff1…