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

news2025/3/1 18:29:28

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.py

INSTALLED_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 render

def 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 views

app_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, include

urlpatterns = [
    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.coloradmin.cn/o/2259011.html

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

相关文章

Jenkins参数化构建详解(This project is parameterized)

本文详细介绍了Jenkins中不同类型的参数化构建方法&#xff0c;包括字符串、选项、多行文本、布尔值和git分支参数的配置&#xff0c;以及如何使用ActiveChoiceParameter实现动态获取参数选项。通过示例展示了传统方法和声明式pipeline的语法 文章目录 1. Jenkins的参数化构建1…

Windows安装WSL子系统及docker,以及WSL和docker配置、使用及问题解决

在Windows操作系统中,Ubuntu子系统(也称为Windows Subsystem for Linux, WSL)为开发者提供了一个在Windows环境下运行Linux环境的平台。然而,有时用户在按照Ubuntu子系统或者使用WSL时,可能会遇到各种问题,下面总结一下解决方式。 想要在Windows上安装Docker(实际上是基…

Linux中的线程

目录 线程的概念 进程与线程的关系 线程创建 线程终止 线程等待 线程分离 原生线程库 线程局部存储 自己实现线程封装 线程的优缺点 多线程共享与独占资源 线程互斥 互斥锁 自己实现锁的封装 加锁实现互斥的原理 死锁 线程同步 线程的概念 回顾进程相关概念 …

shell编程(完结)

shell编程&#xff08;完结&#xff09; 声明&#xff01; 学习视频来自B站up主 ​泷羽sec​​ 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章 笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其…

ctfshow-web 151-170-文件上传

151. 我们首先想到就是上传一句话木马。但是看源代码限制了png。 &#xff08;1&#xff09;改前端代码。 这里是前端限制了上传文件类型&#xff0c;那我们就改一下就好了嘛,改成php。 这里直接修改不行&#xff0c;给大家推荐一篇简短文章&#xff0c;大家就会了&#xff08…

Docker的初识

目录 1. 容器技术发展史1.1 Jail 时代1.2 云时代1.3 云原生时代1.3.1 Google & Docker 竞争1.3.2 k8s 成为云原生事实标准 2. 虚拟化和容器化的概念2.1 什么是虚拟化、容器化2.2 为什么要虚拟化、容器化&#xff1f;2.3 虚拟化实现方式2.3.1 应用程序执行环境分层2.3.2 虚拟…

Jenkins流水线初体验(六)

DevOps之安装和配置 Jenkins (一) DevOps 之 CI/CD入门操作 (二) Sonar Qube介绍和安装(三) Harbor镜像仓库介绍&安装 (四) Jenkins容器使用宿主机Docker(五) Jenkins流水线初体验(六) 一、Jenkins流水线任务介绍 之前采用Jenkins的自由风格构建的项目,每个步骤…

链式设计模式——装饰模式和职责链模式

一、装饰模式 1、概述 动态地给一个对象添加一些额外的职责&#xff0c;就增加功能来说&#xff0c;装饰模式比生成子类更为灵活。 ConcreteComponent &#xff1a;是定义了一个具体的对象&#xff0c;可以给这个对象添加一些职责&#xff1b;Decorator &#xff1a;装饰抽象…

JavaEE多线程案例之阻塞队列

上文我们了解了多线程案例中的单例模式&#xff0c;此文我们来探讨多线程案例之阻塞队列吧 1. 阻塞队列是什么&#xff1f; 阻塞队列是⼀种特殊的队列.也遵守"先进先出"的原则. 阻塞队列是⼀种线程安全的数据结构,并且具有以下特性: 当队列满的时候,继续⼊队列就会…

【Linux】VMware 安装 Ubuntu18.04.2

ISO镜像安装步骤 选择语言 English 选择键盘布局 English 选择系统 Ubuntu 虚拟机网卡地址&#xff0c;默认即可 代理地址&#xff0c;默认空即可 镜像地址&#xff0c;修改成阿里云地址 选择第二项&#xff0c;LVM 磁盘扩容技术 第一块硬盘名sda&#xff0c;默认…

Unity游戏实战

很小的时候在键盘机上玩过一个游戏叫寻秦&#xff0c;最近看有大佬把他的安卓版做出来了&#xff0c;打开封面就是Unity&#xff0c;想自己也尝试一下。

R语言的数据结构-向量

【图书推荐】《R语言医学数据分析实践》-CSDN博客 《R语言医学数据分析实践 李丹 宋立桓 蔡伟祺 清华大学出版社9787302673484》【摘要 书评 试读】- 京东图书 (jd.com) R语言编程_夏天又到了的博客-CSDN博客 在R语言中&#xff0c;数据结构是非常关键的部分&#xff0c;它提…

CTF misc 流量分析特训

以下题目来源于西电的靶场&#xff0c;从NewStar CTF开始 wireshark_checkin 进来看一下http流&#xff0c;结果真的找到flag了&#xff08;感觉有点狗运&#xff09;&#xff0c;第一道流量分析题就这么奇奇妙妙的解出来了 wireshark_secret 根据提示猜测flag可能在图片里&…

React v19稳定版发布12.5

&#x1f916; 作者简介&#xff1a;水煮白菜王 &#xff08;juejin/csdn同名&#xff09;&#xff0c;一位资深前端劝退师 &#x1f47b; &#x1f440; 文章专栏&#xff1a; 前端专栏 &#xff0c;记录一下平时在博客写作中&#xff0c;总结出的一些开发技巧✍。 感谢支持&a…

【JVM】JVM基础教程(三)

上一章&#xff1a;【JVM】JVM基础教程&#xff08;二&#xff09;-CSDN博客 目录 运行时数据区 应用场景 程序计数器 程序计数器在运行时会出现内存溢出吗&#xff1f; 栈 IDEA的debug工具查看栈帧的内容 栈帧的组成 局部变量表 关于 this 的内存存储 操作数栈 帧…

Postman Sandbox 项目教程

Postman Sandbox 项目教程 postman-sandbox Sandbox for Postman Scripts to run in Node.js or browser 项目地址: https://gitcode.com/gh_mirrors/po/postman-sandbox 1. 项目介绍 Postman Sandbox 是一个用于在 Node.js 或浏览器中执行 Postman 脚本的沙盒环境。它…

Maven、mybatis框架

一、Maven介绍 1.概念&#xff1a; Maven项目对象模型(POM)&#xff0c;可以通过一小段描述信息来管理项目的构建&#xff0c;报告和文档的项目管理工具软件。 2.为啥使用maven: 之前项目中需要引入大量的jar包。这些jar从网上下载&#xff0c;可能下载地址不同意。这些jar之间…

Python连接和操作Elasticsearch详细指南

Python连接和操作Elasticsearch详细指南 一、服务器端配置1. 修改 Elasticsearch 配置文件2. 开放防火墙端口 二、本地 Python 连接 Elasticsearch1. 连接 Elasticsearch2. 索引操作3. 文档操作4. 搜索内容5. 聚合查询6. 批量操作 三、注意事项四、故障排除结论 Elasticsearch …

获得日志记录之外的新视角:应用程序性能监控简介(APM)

作者&#xff1a;来自 Elastic David Hope 日志记录领域即将发生改变。在这篇文章中&#xff0c;我们将概述从单纯的日志记录到包含日志、跟踪和 APM 的完全集成解决方案的推荐流程。 通过 APM 和跟踪优先考虑客户体验 企业软件开发和运营已成为一个有趣的领域。我们拥有一些非…

Python - 面向对象;类和对象;方法属性;init,self;魔法方法;析构方法;函数方法区别(六)

一、面向对象编程&#xff08;OOP&#xff09; 定义 面向过程(Procedure Oriented Programming, POP)是一种程序设计范式&#xff0c;主要关注的是实现功能的步骤&#xff0c;设计时模块化和流程化。面向过程编程是一种以过程为中心的编程方式&#xff0c;它将问题分解成一系…