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

Django开发之基础篇

Django基础篇

  • 一、Django学习之路由
  • 二、Django学习之视图
  • 三、Django学习之静态资源


一、Django学习之路由

在 Django 中,路由(URL 映射)是将请求与视图函数关联起来的关键部分。路由定义了如何将特定的 URL 请求映射到 Django 应用程序中的视图函数,从而确定哪个视图函数应该处理请求。

  1. URL配置文件:Django 中的路由由一个或多个 URL 配置文件定义。通常,每个应用程序都有一个名为 urls.py 的 URL 配置文件,用于定义该应用程序的路由规则。此外,Django 项目也有一个根级别的 URL 配置文件,通常命名为 urls.py。

  2. 导入必要的模块:在 URL 配置文件的顶部,需要导入必要的模块,包括 django.urls 和视图函数,以便进行路由配置。

    from django.urls import path
    from . import views
    
  3. 定义 URL 路由规则:在 URL 配置文件中,你可以使用 path() 函数或 re_path() 函数来定义 URL 路由规则。这些函数将 URL 模式与相应的视图函数关联起来。以下是一个简单的示例:

    urlpatterns = [path('home/', views.home_view, name='home'),path('about/', views.about_view, name='about'),
    ]

    在这个示例中,我们定义了两个 URL 路由规则。当用户访问 /home/ 时,将调用 views.home_view 视图函数;当用户访问 /about/ 时,将调用 views.about_view 视图函数。

  4. URL 参数:你可以在路由中包含参数,以便从 URL 中捕获数据。例如,你可以定义一个接受文章 ID 的路由规则:

    path('article/<int:article_id>/', views.article_detail, name='article_detail')
  5. 命名路由:给路由规则命名是一种良好的实践,它允许你在模板和视图中使用可读性更好的名称来引用路由。上面示例中的 name 参数用于给每个路由规则命名,例如 name=‘home’ 和 name=‘about’。

  6. URL 反向解析:Django 提供了 URL 反向解析的功能,允许你根据命名的路由生成相应的 URL。这对于在模板中生成链接或在视图中重定向到其他页面非常有用。你可以使用 {% url ‘name’ %} 模板标签或 reverse(‘name’) 视图函数来进行 URL 反向解析。

  7. 应用命名空间:如果你的 Django 项目包含多个应用程序,可以使用应用命名空间来避免路由冲突。在应用的 URL 配置文件中使用 app_name 来定义应用的命名空间,然后在根级别的 URL 配置文件中使用该命名空间来引用应用的路由规则。

    # 应用的 URL 配置文件
    app_name = 'myapp'# 根级别的 URL 配置文件
    path('myapp/', include('myapp.urls', namespace='myapp'))

二、Django学习之视图

在 Django 中,视图(Views)是处理 Web 请求和返回 Web 响应的核心部分。视图函数负责接收 HTTP 请求,执行必要的逻辑,然后返回 HTTP 响应。

  1. 创建视图函数:在 Django 中,你需要编写 Python 函数来定义视图。这些函数通常存储在应用程序的 views.py文件中。一个简单的 Django 视图函数如下:

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

    这个视图函数接收一个 request 参数,该参数包含了关于当前请求的信息,然后返回一个 HttpResponse 对象,其中包含了要返回给客户端的内容。

  2. HTTP 请求方法:视图函数可以根据 HTTP 请求方法来执行不同的逻辑。例如,你可以使用 request.method 来检查请求的方法,如 GET、POST、PUT、DELETE 等,然后根据不同的方法执行相应的操作。

  3. URL 路由和视图映射:在 Django 中,你需要将 URL 请求映射到相应的视图函数。这通常通过在 URL 配置文件中定义路由规则来实现。每个路由规则将一个 URL 模式与一个视图函数关联起来。

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

    在上述示例中,path(‘hello/’, views.hello, name=‘hello’) 将 /hello/ URL 映射到 views.hello 视图函数。

  4. 请求参数和上下文:视图函数可以接收来自 HTTP 请求的参数,例如 URL 参数、表单数据或 JSON 数据。这些参数通常通过 request 对象来获取。视图函数还可以定义上下文数据,以便将数据传递给模板渲染。

    def test(request,pid):# 1、当前urlprint(request.path_info)# 2、URL传递参数print(request.GET)# 3、请求方式print(request.method)# 4、如果post请求,传递请求体(原始数据)print(request.body)# 5、请求头print(request.headers)# 6、cooker值print(request.COOKIES)# 7、其他值print(request.resolver_match)return HttpResponse("ok")
  5. 返回响应:视图函数的主要任务是返回一个 HTTP 响应。你可以使用 HttpResponse 对象来返回纯文本、HTML、JSON 等不同类型的响应。Django 还提供了许多其他类型的响应对象,如 JsonResponse、Redirect 等,以便根据需要返回不同类型的响应。

  6. 模板渲染:通常,视图函数会渲染 HTML 模板并将数据传递给模板以进行渲染。Django 使用模板引擎来将数据嵌入到 HTML 模板中,生成最终的响应。你可以使用 render 函数来渲染模板。

    from django.shortcuts import renderdef my_view(request):data = {'name': 'John'}return render(request, 'my_template.html', context=data)
  7. 装饰器:Django 允许你使用装饰器来修改视图函数的行为,例如要求用户登录、缓存响应等。常用的装饰器包括 @login_required 和 @cache_page。

  8. 类视图:除了函数视图,Django 还支持基于类的视图(Class-Based Views,CBVs),它们提供了更多的可复用性和结构化的方式来编写视图。常见的类视图包括 DetailView、ListView、CreateView 等。

    def user(request):if request.method == "GET":passelif request.method == "POST":pass
    
    from django.views import View
    class UserView(View):def get(self):passdef post(self):pass
    

三、Django学习之静态资源

在 Django 中,静态资源包括 CSS、JavaScript、图像和其他静态文件,它们用于构建和美化你的网站。配置和提供静态资源对于一个 Web 应用程序至关重要。

  1. 项目目录结构:首先,确保你的 Django 项目具有以下典型的目录结构:

    myproject/
    ├── myproject/
    │   ├── settings.py
    │   ├── urls.py
    ├── myapp/
    │   ├── static/
    │   │   ├── myapp/
    │   │   │   ├── css/
    │   │   │   ├── js/
    │   │   │   ├── images/
    ├── templates/
    │   ├── ...
    ├── manage.py

    在上述结构中,myapp 是你的应用程序,static 目录用于存储静态资源,templates 目录用于存储 HTML 模板。

  2. 配置静态文件路径:在 Django 项目的 settings.py 文件中,确保你已经正确配置了静态文件路径。通常,你需要设置以下两个设置:

    STATIC_URL = '/static/'  # 静态文件的URL前缀
    STATICFILES_DIRS = [os.path.join(BASE_DIR, 'myapp/static')]  # 静态文件的存储位置

    STATIC_URL 定义了静态文件在 URL 中的前缀。默认情况下,它设置为 /static/,这意味着你的静态文件将通过 http://yourdomain.com/static/ 访问。

    STATICFILES_DIRS 指定了静态文件的存储位置,这里设置为应用程序的 static 目录。Django 将在这些目录中查找静态文件。

  3. 使用静态文件:在 HTML 模板中,你可以使用 {% load static %} 模板标签来加载静态文件。然后,可以使用 {% static ‘path/to/your/static/file’ %} 标签来引用静态文件。例如:

    <!DOCTYPE html>
    <html>
    <head><link rel="stylesheet" type="text/css" href="{% static 'myapp/css/style.css' %}">
    </head>
    <body><img src="{% static 'myapp/images/logo.png' %}" alt="Logo">
    </body>
    </html>

    这里,{% static ‘path/to/your/static/file’ %} 将根据 STATIC_URL 配置生成正确的 URL。

  4. 收集静态文件:在开发过程中,Django 的开发服务器可以自动提供静态文件。但在生产环境中,通常需要收集所有静态文件到一个集中的位置,并由 Web 服务器提供。你可以使用以下命令来收集静态文件:

    python manage.py collectstatic
    

    这将会将所有静态文件从各个应用程序的 static 目录收集到一个目录中,通常是你的项目目录下的 static 目录。

  5. 使用 CDN(内容分发网络):在生产环境中,可以考虑使用 CDN 来提供静态资源,以加速资源加载并减轻服务器负担。在模板中使用绝对 URL 或 CDN URL 来引用静态资源。

相关文章:

Django开发之基础篇

Django基础篇 一、Django学习之路由二、Django学习之视图三、Django学习之静态资源 一、Django学习之路由 在 Django 中&#xff0c;路由&#xff08;URL 映射&#xff09;是将请求与视图函数关联起来的关键部分。路由定义了如何将特定的 URL 请求映射到 Django 应用程序中的视…...

在 centos7 上安装Docker

1、检查linux内核 Docker 运行在 CentOS 7 上&#xff0c;要求系统为64位、系统内核版本为 3.10 以上。 Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上&#xff0c;要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。 uname -r 2、使用 root 权限登录 Centos…...

基于SpringBoot的大学城水电管理系统

目录 前言 一、技术栈 二、系统功能介绍 管理员模块的实现 领用设备管理 消耗设备管理 设备申请管理 状态汇报管理 用户模块的实现 设备申请 状态汇报 用户反馈 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛…...

微信小程序 movable-view 控制长按才触发拖动 轻轻滑动页面正常滚动效果

今天写 movable-areamovable-view遇到了个头疼的问题 那就是 movable-view 监听了用户拖拽自己 但 我们小程序 上下滚动页面靠的也是拖拽 也就是说 如果放在这里 用户拖动 movable-view部分 就会永远触发不了滚动 那么 我们先可以 加一个 bindlongpress"longpressHandler…...

mysql面试题27:数据库中间件了解过吗?什么是sharding jdbc、mycat,并且讲讲怎么使用?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:数据库中间件了解过吗,比如sharding jdbc、mycat? 我知道的数据库中间件有以下这些: MySQL Proxy:MySQL Proxy是一个开源的数据库中间件,它位…...

DBCO Sata650,二苯并环辛烷Sata650,Seta-650-DBCO

产品简介&#xff1a; CAS号&#xff1a;N/A 中文名&#xff1a;二苯并环辛烷Sata650 英文名&#xff1a;DBCO Sata650,Seta-650-DBCO 化学式&#xff1a;N/A 分子量&#xff1a;1431.85 纯度标准&#xff1a;95% 供应商&#xff1a;陕西新研博美生物科技有限公司 存储…...

JFLASH基本使用总结

注意&#xff0c;不同版本的操作略有不同&#xff0c;本教程以J-Flash V5.12f为例。 烧录文件 如果是刚打开J-Flash&#xff0c;会弹出这样的一个工程选择界面&#xff0c;可以选择已有工程&#xff0c;或者创建新的工程&#xff0c;我们这里选择创建新工程。 注意&#xff0…...

具身智能(Embodied AI)

前言 图灵奖得主、上海期智研究院院长姚期智认为&#xff0c;人工智能领域下一个挑战将是实现“具身通用人工智能”&#xff0c;即如何构建能够通过自我学习掌握各种技能并执行现实生活中的种种通用任务的高端机器人。清华大学计算机系教授张钹院士&#xff0c;也在某产业智能论…...

C语言的文件写入、读取

目标1&#xff1a;使用C语言的文件操作来实现一次性将输入的数据转换为字符串写入文件&#xff0c;然后逐行读取并进行操作。 模板 #include <stdio.h>int main() {// 打开文件以写入数据FILE *file fopen("data.txt", "w");if (file NULL) {pri…...

CART 算法——决策树

目录 1.CART的生成&#xff1a; &#xff08;1&#xff09;回归树的生成 &#xff08;2&#xff09;分类树的生成 ①基尼指数 ②算法步骤 2.CART剪枝&#xff1a; &#xff08;1&#xff09;损失函数 &#xff08;2&#xff09;算法步骤&#xff1a; CART是英文“class…...

CF1877A Goals of Victory

题目是说&#xff0c;有n个队伍进行足球赛&#xff0c;两两之间进行一场足球赛&#xff0c;会有一个积分&#xff0c;a:b&#xff0c;题目所说的efficiency表示的是一个队伍的得分减去对手队伍的得分 #include<bits/stdc.h> using namespace std;int num[110];int main(…...

018-第三代软件开发-整体介绍

第三代软件开发-整体介绍 文章目录 第三代软件开发-整体介绍项目介绍整体介绍Qt 属性系统QML 最新软件技术框架 关键字&#xff1a; Qt、 Qml、 属性、 Qml 软件架构 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Meta-Object …...

储存数据文本json的读写

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言一、json文本介绍二、json文本的应用三、json文本的操作1、环境配置2、写入文件3、读取文件4、文件格式解析注意的点参考链接前言 认知有限,望大家…...

Java之动态代理的详细解析

2. 动态代理 2.1 好处&#xff1a; 无侵入式的给方法增强功能 2.2 动态代理三要素&#xff1a; 1&#xff0c;真正干活的对象 2&#xff0c;代理对象 3&#xff0c;利用代理调用方法 切记一点&#xff1a;代理可以增强或者拦截的方法都在接口中&#xff0c;接口需要写在…...

github Release 下载加速,绿色合法,遥遥领先

你有没有这样一个困惑&#xff0c;当你寻找了很久终于找到一个解决问题的方案&#xff0c;发现这个工具在 GitHub 上&#xff0c;接下来等待我们的就是遥遥无期的龟速下载。 文章目录 前言下载测试加速下载操作 视频讲解 遥遥领先 前言 GitHub 作为程序员的知识宝库&#xff…...

RabbitMQ消息中间件概述

1.什么是RabbitMQ RabbitMQ是一个由erlang开发的AMQP&#xff08;Advanced Message Queue &#xff09;的开源实现。AMQP 的出现其实也是应了广大人民群众的需求&#xff0c;虽然在同步消息通讯的世界里有很多公开标准&#xff08;如 COBAR的 IIOP &#xff0c;或者是 SOAP 等&…...

12V手电钻保护板如何接线演示

爱做手工的小伙伴们肯定会用到手电钻&#xff0c;那么电池消耗完了&#xff0c;或要换的&#xff0c;或要自己动手做几个备用电源&#xff0c;关键点就是电路保护板的接线。废话不多说&#xff0c;直接上板子看实操。 文章目录 一、线路板图1、输入接线2、输出接线 二、接线方法…...

基于SpringBoot的教学辅助平台

目录 前言 一、技术栈 二、系统功能介绍 学生信息管理 教师信息管理 课程信息管理 科目分类管理 班级分类管理 课程作业管理 交流论坛管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理…...

Qt 读写数据流文件(转 CppGuiProgrammingWithQt4)

读取文件&#xff1a; update 20140525&#xff1a;添加线程处理&#xff0c;在读取大文件时优化&#xff0c;防止 app 出现 application 假死状态。 bool SpreadSheet::readFile(const QString &filePath){QFile file(filePath);if ( !file.open(QIODevice::ReadOnly)) …...

Pygame中将鼠标形状设置为图片2-2

3 编写主程序 在主程序中&#xff0c;首先创建屏幕并且完成一些准备工作&#xff0c;之后在while循环中不断更新sprite实例即可。 3.1 创建屏幕及准备工作 创建屏幕及准备工作的代码如图5所示。 图5 创建屏幕及准备工作 其中&#xff0c;第20行代码调用pygame.mouse模块中的…...

GPU 基础知识整理

萌新&#xff1a; 在接触一款硬件时我会&#xff1a;基础硬件结构&#xff0c;线程结构&#xff0c;内存布局&#xff0c;数据吞吐量&#xff0c;等方面进行学习 首先GPU的特点: 并行性能&#xff1a;GPU 是专门设计用于并行计算的硬件&#xff0c;通常具有大量的处理单元&am…...

stable diffusion API接口 + 扩展接口

文章目录 概要流程页面接口调用展示txt2img接口AutoDL设置扩展接口 概要 调研Stable Diffusion二次开发&#xff0c;查看接口文档。 基于AutoDL算力服务器&#xff0c;直接安装部署&#xff0c;非常容易上手&#xff0c;部署教程放下面了。 部署教程 流程 页面接口调用 页面…...

MySQL数据库基本操作和完整性约束类型详解

目录 一、增删改查的sql语句二、表完整性约束1、表完整性约束的介绍2、常见的完整性约束类型3、表完整性约束实战操作3.1.主键primary key3.2.自增键auto_increment3.3.唯一键UNIQUE3.4.null与not null3.5.默认约束 一、增删改查的sql语句 SQL&#xff08;Structured Query Lan…...

unity2022版本 实现加减进度条

简介 在现代游戏开发中&#xff0c;用户界面 (UI) 扮演着至关重要的角色&#xff0c;它不仅为玩家提供信息&#xff0c;还增强了游戏的可玩性。加减进度条是一种常见的UI元素&#xff0c;它可以用于显示游戏中的进度、倒计时、资源管理和其他关键信息。在这篇博客中&#xff0…...

COCO数据集中图像的caption读取到txt文件

annotations_trainval2017.zip import os import shutil import jsoncaptions_path r"G:\SketchDiffusion\Sketchycoco\Dataset\annotations\captions_train2017.json" # 读取json文件 with open(captions_path, r) as f1:dictortary json.load(f1)# 得到images和…...

再谈Java泛型

一.类型参数的约束 我们可以对泛型传进来的参数做一些约束&#xff0c;比如说 用extends表明传进来的参数类型必须是必须是某个类型的子类型或者本身 当然也可以用接口约束&#xff0c;也是用extends表明传进来的参数类型必须实现某个接口。用&连接&#xff0c;注意class…...

scss使用自定义函数实现单位像素随屏幕比例动态缩放

vue中通过变量和scss函数来动态实现动态缩放像素 简单来说就是比例缩小时&#xff0c;像素单位变大&#xff0c;从而字体大小相对不变&#xff0c;以下仅处理比例缩小的状况 自定义一个属性–size&#xff0c;初始值为1px template <template><div class"hom…...

Django 静态自定义化配置

STATIC # APP本地静态资源目录&#xff08;就APP对应的&#xff09; STATIC_URL "/static/"# 远程静态文件URL&#xff08;少用&#xff09; REMOTE_STATIC_URL# 外部引用静态文件目录&#xff08;外层的&#xff09; STATICFILES_DIRS [os.path.join(BASE_DIR, &…...

TensorFlow入门(十四、数据读取机制(1))

TensorFlow的数据读取方式 TensorFlow的数据读取方式共有三种,分别是: ①预加载数据(Preloaded data) 预加载数据的方式,其实就是静态图(Graph)的模式。即将数据直接内嵌到Graph中,再把Graph传入Session中运行。 示例代码如下: import tensorflow.compat.v1 as tf tf.disabl…...

hyperf框架WebSocket 服务

1&#xff1a;安装 composer require hyperf/websocket-server2&#xff1a;配置 Server 修改 config/autoload/server.php&#xff0c;增加以下配置。 return [servers > [[name > ws,type > Server::SERVER_WEBSOCKET,host > 0.0.0.0,port > 9502,sock_typ…...