每天40分玩转Django:简介和环境搭建

Django简介和环境搭建

一、课程概述

学习项目具体内容预计用时
Django概念Django框架介绍、MVC/MTV模式、Django特点60分钟
环境搭建Python安装、pip配置、Django安装、IDE选择45分钟
创建项目项目结构、基本配置、运行测试75分钟
实战练习创建个人博客项目框架60分钟

二、Django框架介绍

2.1 什么是Django?

Django是一个高级的Python Web框架,它鼓励快速开发和清晰、实用的设计。由经验丰富的开发人员构建,它解决了Web开发中的许多麻烦,因此你可以专注于编写应用程序,而无需重新发明轮子。最重要的是,它是免费和开源的。

2.2 Django的主要特点

  1. 快速开发:Django的设计目标之一就是帮助开发者快速从概念到完成应用
  2. 安全可靠:内置防御跨站请求伪造、SQL注入、跨站脚本等攻击手段
  3. 扩展性强:可以使用"应用"的概念将项目分割成多个应用
  4. 丰富的功能:包含ORM、Admin后台、Forms表单等常用功能
  5. 完善的文档:拥有完善的在线文档和开发社区

2.3 MVC与MTV模式

Django使用MTV模式,这是MVC的Django实现:

MVC模式MTV模式说明
ModelModel数据库表的设计和操作
ViewTemplate页面的设计和展示
ControllerView业务逻辑的处理

在这里插入图片描述

三、环境搭建

3.1 Python安装

  1. 访问Python官网下载Python 3.x版本(推荐3.8以上)
  2. 安装时勾选"Add Python to PATH"
  3. 验证安装:打开命令行输入
python --version

3.2 pip配置(Python包管理工具)

  1. pip通常随Python一起安装
  2. 验证pip安装:
pip --version
  1. 配置国内镜像源(可选,但推荐):
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

3.3 Django安装

pip install django

验证Django安装:

import django
print(django.get_version())

四、创建第一个Django项目

4.1 创建项目

django-admin startproject mysite

4.2 项目结构说明

mysite/├── manage.py           # 项目管理文件└── mysite/├── __init__.py     # 空文件,表明该目录是一个Python包├── settings.py     # 项目设置文件├── urls.py         # URL声明文件├── asgi.py        # ASGI兼容的Web服务器的入口└── wsgi.py        # WSGI兼容的Web服务器的入口

4.3 基本配置(settings.py)

# mysite/settings.py# 数据库配置
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': BASE_DIR / 'db.sqlite3',}
}# 语言和时区设置
LANGUAGE_CODE = 'zh-hans'  # 设置语言为中文
TIME_ZONE = 'Asia/Shanghai'  # 设置时区为中国时区
USE_I18N = True
USE_L10N = True
USE_TZ = True# 静态文件设置
STATIC_URL = '/static/'

4.4 创建应用

python manage.py startapp blog

应用结构:

blog/├── __init__.py├── admin.py├── apps.py├── migrations/├── models.py├── tests.py└── views.py

4.5 注册应用

# mysite/settings.pyINSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','blog.apps.BlogConfig',  # 添加新创建的应用
]

五、实战练习:创建个人博客项目

5.1 创建视图(blog/views.py)

from django.http import HttpResponse
from django.shortcuts import renderdef index(request):return HttpResponse("欢迎访问我的博客!")def post_list(request):context = {'title': '博客文章列表','posts': [{'title': '第一篇博客','content': '这是我的第一篇博客内容...','date': '2024-01-01'},{'title': '第二篇博客','content': '这是我的第二篇博客内容...','date': '2024-01-02'}]}return render(request, 'blog/post_list.html', context)

5.2 创建URL配置(blog/urls.py)

from django.urls import path
from . import viewsapp_name = 'blog'urlpatterns = [path('', views.index, name='index'),path('posts/', views.post_list, name='post_list'),
]

5.3 主URL配置(mysite/urls.py)

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

5.4 创建模板

  1. 在blog应用目录下创建templates文件夹
  2. 在templates下创建blog文件夹
  3. 创建post_list.html模板:
<!-- blog/templates/blog/post_list.html -->
<!DOCTYPE html>
<html>
<head><title>{{ title }}</title>
</head>
<body><h1>{{ title }}</h1>{% for post in posts %}<article><h2>{{ post.title }}</h2><p>{{ post.content }}</p><p>发布日期:{{ post.date }}</p></article><hr>{% endfor %}
</body>
</html>

5.5 运行开发服务器

python manage.py runserver

访问以下URL测试:

  • http://127.0.0.1:8000/blog/
  • http://127.0.0.1:8000/blog/posts/

六、调试和开发工具

6.1 推荐的IDE

  1. PyCharm Professional(推荐):

    • 内置Django支持
    • 智能代码补全
    • 调试工具
    • 数据库工具
  2. Visual Studio Code + Python插件:

    • 轻量级
    • 免费开源
    • 丰富的插件生态

6.2 Django Debug Toolbar

安装Debug Toolbar:

pip install django-debug-toolbar

配置settings.py:

INSTALLED_APPS = [...'debug_toolbar',
]MIDDLEWARE = [...'debug_toolbar.middleware.DebugToolbarMiddleware',
]INTERNAL_IPS = ['127.0.0.1',
]

七、常见问题和解决方案

  1. 数据库迁移问题:
python manage.py makemigrations
python manage.py migrate
  1. 静态文件不显示:
# settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [BASE_DIR / "static",
]
  1. 模板找不到:
    检查TEMPLATES设置:
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [BASE_DIR / 'templates'],'APP_DIRS': True,...},
]

八、学习成果检验

完成以下任务来检验今天的学习效果:

  1. 创建一个新的Django项目
  2. 添加一个新的应用
  3. 创建一个简单的视图和模板
  4. 配置URL路由
  5. 运行项目并访问创建的页面

九、进阶任务

  1. 尝试使用Django的模板继承
  2. 添加静态文件(CSS、JavaScript)
  3. 实现一个简单的表单处理
  4. 配置Django Admin后台

记住:学习Django是一个循序渐进的过程,今天的内容是为后续的学习打下基础。确保完全理解今天的每个概念,这将有助于更好地理解接下来的高级主题。

建议:

  1. 动手实践每个示例代码
  2. 记录遇到的问题和解决方案
  3. 尝试修改示例代码,观察结果变化
  4. 查看Django官方文档深入学习

怎么样今天的内容还满意吗?再次感谢朋友们的观看,关注GZH:凡人的AI工具箱,回复666,送您价值199的AI大礼包。最后,祝您早日实现财务自由,还请给个赞,谢谢!

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

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

相关文章

elasticsearch设置默认账号密码

1.进入elasticsearch的bin目录下&#xff0c;输入命令&#xff1a; elasticsearch-setup-passwords interactive 2.输入对应的账号密码&#xff0c;然后重启elasticsearch&#xff0c;用对应的账号密码登录访问即可

用拉普拉斯变换的方差算法实现相机自动对焦

使用拉普拉斯变换的方差来计算图像的清晰度的主要原因是拉普拉斯算子可以有效检测图像的边缘和高频细节。图像的清晰度与边缘强度和高频分量的丰富程度密切相关,以下是更详细的解释: 1. 拉普拉斯算子的作用 拉普拉斯算子是一种二阶导数算子,定义为: 它可以在图像中检测快…

基于Sharding-jdbc实现水平分库、垂直分库、读写分离

一、实现水平分库 需求说明 水平分库是把同一个表的数据按一定规则拆到不同的数据库中&#xff0c;每个库可以放在不同的服务器上。 接下来咱们继续对快速入门中的例子进行完善。 实现步骤 将原有order_db库拆分为order_db_1、order_db_2 CREATE DATABASE order_db_1 CHAR…

基于前后端分离的食堂采购系统源码:从设计到开发的全流程详解

本篇文章&#xff0c;笔者将从系统设计到开发的全过程进行详解&#xff0c;帮助开发者和企业了解如何高效构建一套完善的食堂采购系统。 一、系统需求分析 在开发一套基于前后端分离的食堂采购系统前&#xff0c;必须对业务需求和功能模块进行详细分析&#xff0c;确保系统设…

第三十一章 Spring之假如让你来写事务——融入IOC容器篇

Spring源码阅读目录 第一部分——IOC篇 第一章 Spring之最熟悉的陌生人——IOC 第二章 Spring之假如让你来写IOC容器——加载资源篇 第三章 Spring之假如让你来写IOC容器——解析配置文件篇 第四章 Spring之假如让你来写IOC容器——XML配置文件篇 第五章 Spring之假如让你来写…

【笔记】记录一个python初见的语法(一)

在看书里的代码时了解了一个python的语法知识&#xff0c;是有关class类的。 代码如下&#xff1a; class Vocab: #save"""文本词表"""def __init__(self, tokensNone, min_freq0, reserved_tokensNone):if tokens is None:tokens []if rese…

LabVIEW面向对象编程有什么特点?

LabVIEW面向对象编程&#xff08;OOP&#xff09;的特点主要体现在它如何结合传统面向对象编程&#xff08;OOP&#xff09;的理念与LabVIEW的图形化编程模式&#xff0c;提供灵活的抽象和模块化的功能。以下是LabVIEW面向对象编程的几个主要特点&#xff1a; ​ 1. 类&#x…

【LC】240. 搜索二维矩阵 II

题目描述&#xff1a; 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,…

一级考试真题(2019)

一级考试真题&#xff08;2019&#xff09;

AudioSegment 将音频分割为指定长度时间片段 - python 实现

DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 需要更多数据资源和技术解决方案&#xff0c;知识星球&#xff1a; “DataBall - X 数据球(free)” -------------------------------------------------------------…

【kubernetes】k8s集群的简述与搭建

简述 Kubernetes&#xff08;简称 K8s&#xff09;是一个开源的容器编排平台&#xff0c;用于自动化部署、扩展和管理容器化应用程序 关键特性 自动化部署和回滚&#xff1a;Kubernetes 可以自动化地部署和回滚应用程序&#xff0c;确保应用程序始终处于预期的状态。服务发现…

C++ 内存管理和模板与STL

此篇目是之后各种C库的基础 目录 内存管理 内存分布 内存管理方式 new和delete operator new 与 operator delete函数 实现原理 定位new表达式(placement-new) 模板基础 泛型编程 模板 函数模板 类模板 STL 组成部分 内存管理 内存分布 int globalVar 1; //全局变量 静…

在 Ubuntu 24.04.1 LTS (WSL) 中使用 openssl 生成 keybox.xml

看到“生成 keybox.xml”&#xff0c;大概率都会联想到 PIF 和 Tricky Store。这里就不多解释它们的用途了。最近在网上看到生成非 AOSP keybox 的教程&#xff0c;在这里做一些补充&#xff0c;并将代码打包成一个 Python 脚本。 参考自&#xff1a; Idea 提供者&#xff1a…

Redis篇-1--入门介绍

1、Redis概述 ‌Redis&#xff08;Remote Dictionary Server&#xff09;&#xff0c;全称为远程字典服务。‌是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。 Redis提供了多种数据类型的存储&#xff0c;来适应不同场景下的存储需…

antdv-<a-button>中属性的使用

UI组件库&#xff08;User Interface Component Library&#xff09;是一种预先构建好的、可重用的用户界面元素集合&#xff0c;旨在帮助开发者更快速、更简便地构建用户界面。这些组件通常包括按钮、表单、导航栏、模态框等&#xff0c;能够提供一致的外观和交互风格&#xf…

简单的多网卡选择指定网卡ip注册

简单的多网卡选择指定网卡ip注册 我们公司服务器上面有多个网卡&#xff0c;多网卡则本地ip有多个ip,我们启动服务的时候需要选定他特定的ip&#xff0c;我们服务需要特定的ip进行注册&#xff0c;才能进行正常的通讯功能&#xff0c;我们需要使用如下配置进行特定ip选择&…

鸿蒙NEXT开发案例:颜文字搜索器

【引言】 本文将介绍一个名为“颜文字搜索器”的开发案例&#xff0c;该应用是基于鸿蒙NEXT平台构建的&#xff0c;旨在帮助用户快速查找和使用各种风格的表情符号。通过本案例的学习&#xff0c;读者可以了解如何在鸿蒙平台上进行数据处理、UI设计以及交互逻辑的实现。 【环…

快速部署一套K8s集群-v1.28

快速部署一套K8s集群-v1.28 1.前置知识点 1.1 生产环境可部署Kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式: kubeadmKubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。 二进制包从github下载发行版的二进…

【硬件测试】基于FPGA的4ASK调制解调通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR

目录 1.算法仿真效果 2.算法涉及理论知识概要 3.Verilog核心程序 4.开发板使用说明和如何移植不同的开发板 5.完整算法代码文件获得 1.算法仿真效果 本文是之前写的文章: 《基于FPGA的4ASK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR》 的…

用友U8+ API接口使用教程

前言 U8和其他的公开的开放API接口有一些差异&#xff0c;他是需要先对接的到代理服务器&#xff0c;通过代理服务器进行对接&#xff0c;所以只要保证U8能上网就能对接&#xff0c;和畅捷通T的模式有点类似 流程&#xff1a; 注册成为开发者&#xff08;用于创建用友U8 API应…