Django 简介:Django 及其核心功能概述
mhr18 2024-12-30 05:25 24 浏览 0 评论
Django 是一个高级 Python Web 框架,鼓励快速开发和简洁、实用的设计。由于其强大的功能集、可扩展性和安全性,它被广泛用于构建 Web 应用程序。在本篇博文中,我们将探讨 Django 的主要功能、为什么它是开发人员的热门选择,并提供一些实用的演示来帮助您入门。
什么是 Django?
Django 是一个遵循模型-视图-模板 (MVT) 架构模式的开源 Web 框架。它旨在帮助开发人员尽快将应用程序从概念变为现实。Django 的理念强调可重用性、快速开发和“不要重复自己”(DRY) 的原则。它以简单易用而闻名,因此深受初学者和经验丰富的开发人员的喜爱。
Django 的主要功能
- MTV 架构(模型-模板-视图):
- 模型(Module):处理数据和业务逻辑。它代表数据库模式,并负责与数据库交互。
- 模板(Template):处理表示层。它定义如何向用户呈现数据。
- 视图(View):充当模型和模板之间的桥梁。它处理用户请求,从模型中获取数据,并将其传递给模板。
- 管理界面:
- Django 提供了一个内置的管理界面,允许您管理应用程序的数据。它是可定制的,并根据您的模型自动生成。
- ORM(对象关系映射Object-Relational Mapping):
- Django 的 ORM 允许您使用 Python 代码与数据库交互,而不是编写 SQL 查询。它支持多种数据库后端,如 PostgreSQL、MySQL、SQLite 和 Oracle。
- URL 路由:
- Django 使用 URL 调度程序将 URL 映射到视图。它使处理应用程序中的不同 URL 变得简单而灵活。
- 表单处理:
- Django 简化了表单处理、验证和提交。它自动处理 CSRF 保护,使其默认安全。
- 安全功能:
- Django 提供强大的安全功能,包括针对 SQL 注入、跨站点脚本 (XSS)、跨站点请求伪造 (CSRF) 和点击劫持的保护。
- 模板系统:
- Django 带有自己的模板引擎,可让您创建动态 HTML 页面。它支持模板继承和自定义标签和过滤器。
- 可扩展性:
- Django 旨在实现可扩展性。世界上一些最大的网站都在使用它,证明了它能够处理高流量和大量数据。
- 中间件支持:
- Django 中的中间件允许您全局处理请求,从而轻松实现身份验证、压缩和缓存等功能。
- 国际化:
- Django 支持国际化和本地化,使您能够开发可在多种语言和地区使用的应用程序。
演示 1:设置 Django 项目
要开始使用 Django,您首先需要安装它。运行以下命令使用 pip 安装 Django:
pip install django
安装完成后,您可以通过运行以下命令创建一个新的 Django 项目:
django-admin startproject myproject
此命令会创建一个名为 myproject 的新目录,其中包含启动 Django 应用程序所需的文件。
演示 2:创建 Django 应用程序
设置 Django 项目后,您可以在项目中创建一个应用程序。在 Django 中,应用程序是一个执行某些操作的 Web 应用程序,例如博客或登录系统。
导航到您的项目目录并运行:
python manage.py startapp myapp
此命令会创建一个名为 myapp 的新目录,其中包含 Django 应用程序所需的基本文件。
演示 3:创建简单模型
Django 模型定义数据库表的结构。让我们在 myapp/models.py 中为博客文章创建一个简单的模型:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
published_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
定义模型后,您需要创建并应用迁移来更新数据库架构。运行:
python manage.py makemigrations
python manage.py migrate
演示 4:使用管理界面注册模型
要通过 Django 的管理界面管理 Post 模型,您需要在 myapp/admin.py 中注册它:
from django.contrib import admin
from .models import Post
admin.site.register(Post)
现在,您可以登录管理界面并管理您的博客文章。使用以下命令启动开发服务器:
python manage.py runserver
访问 http://127.0.0.1:8000/admin/,使用超级用户凭据登录,您将看到列出的 Post 模型。
演示 5:创建视图和模板
让我们创建一个视图来显示博客文章列表并使用模板呈现它。
在 myapp/views.py 中,添加以下代码:
from django.shortcuts import render
from .models import Post
def post_list(request):
posts = Post.objects.all()
return render(request, 'post_list.html', {'posts': posts})
接下来,在 myapp/urls.py 中为此视图创建一个 URL 模式:
from django.urls import path
from .views import post_list
urlpatterns = [
path('', post_list, name='post_list'),
]
最后,在 myapp/templates/ 目录中创建一个模板文件 post_list.html:
<!DOCTYPE html>
<html>
<head>
<title>Blog Posts</title>
</head>
<body>
<h1>Blog Posts</h1>
<ul>
{% for post in posts %}
<li>{{ post.title }} - {{ post.published_date }}</li>
{% endfor %}
</ul>
</body>
</html>
现在,访问 http://127.0.0.1:8000/ 将显示博客文章列表。
演示 6:使用 Django 的内置身份验证系统
Django 带有一个强大的内置身份验证系统,可让您管理用户身份验证,包括登录、注销、密码更改和密码重置功能。
步骤 1:设置用户注册
首先,让我们使用 Django 的内置用户模型创建一个用户注册表单。在 myapp/forms.py 中,创建以下表单:
from django import forms
from django.contrib.auth.models import User
class UserRegistrationForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput)
class Meta:
model = User
fields = ['username', 'password']
步骤 2:创建注册视图
在 myapp/views.py 中,添加一个视图来处理用户注册:
from django.shortcuts import render, redirect
from django.contrib.auth import login
from .forms import UserRegistrationForm
def register(request):
if request.method == 'POST':
form = UserRegistrationForm(request.POST)
if form.is_valid():
user = form.save(commit=False)
user.set_password(form.cleaned_data['password'])
user.save()
login(request, user)
return redirect('home')
else:
form = UserRegistrationForm()
return render(request, 'register.html', {'form': form})
步骤 3:创建模板
在 myapp/templates/ 目录中创建一个 register.html 模板:
<!DOCTYPE html>
<html>
<head>
<title>User Registration</title>
</head>
<body>
<h2>Register</h2>
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Register</button>
</form>
</body>
</html>
步骤 4:添加 URL 模式
在 myapp/urls.py 中,为注册视图添加 URL 模式:
from django.urls import path
from .views import register
urlpatterns = [
path('register/', register, name='register'),
# other url patterns
]
现在,访问 http://127.0.0.1:8000/register/ 将允许用户注册,注册后用户将立即登录。
演示 7:使用 Django 的 ORM 进行复杂查询
Django 的 ORM 可以轻松执行复杂的数据库查询。让我们使用 Django 的 ORM 演示一些常见任务。
步骤 1:过滤数据
您可以根据特定条件过滤数据。例如,要获取所有已发布的博客文章:
published_posts = Post.objects.filter(status='published')
步骤 2:排序数据
要按发布日期降序排列文章:
ordered_posts = Post.objects.order_by('-published_date')
步骤 3:组合过滤器
您可以链接过滤器以缩小结果范围:
recent_published_posts = Post.objects.filter(status='published').order_by('-published_date')[:5]
步骤 4:聚合
Django ORM 支持聚合函数。例如,要计算帖子数量:
from django.db.models import Count
post_count = Post.objects.aggregate(Count('id'))
这些查询可以在 Django 视图中执行,并可以传递给模板以动态呈现结果。
演示 8:将 Django 与 REST 框架集成
Django REST 框架 (DRF) 是一个功能强大且灵活的工具包,用于构建 Web API。让我们使用 Django REST 框架设置一个简单的 API。
步骤 1:安装 Django REST 框架
首先,使用 pip 安装 Django REST 框架:
pip install djangorestframework
步骤 2:将 REST 框架添加到已安装的应用程序
将 rest_framework 添加到 settings.py 中的 INSTALLED_APPS 列表中:
INSTALLED_APPS = [
# other apps
'rest_framework',
]
步骤 3:创建序列化器
在 myapp/serializers.py 中,为 Post 模型创建序列化器:
from rest_framework import serializers
from .models import Post
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ['id', 'title', 'content', 'published_date']
步骤 4:创建视图集
在 myapp/views.py 中,为 Post 模型添加视图集:
from rest_framework import viewsets
from .models import Post
from .serializers import PostSerializer
class PostViewSet(viewsets.ModelViewSet):
queryset = Post.objects.all()
serializer_class = PostSerializer
步骤 5:添加 URL 模式
在 myapp/urls.py 中,添加一个路由器来处理 API 端点:
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import PostViewSet
router = DefaultRouter()
router.register(r'posts', PostViewSet)
urlpatterns = [
path('', include(router.urls)),
]
现在,您可以访问 http://127.0.0.1:8000/posts/ 上的 API 端点,使用 GET、POST、PUT 和 DELETE 等 HTTP 方法对 Post 模型执行 CRUD 操作。
演示 9:设置静态文件和媒体文件
Django 提供了一种处理静态文件(CSS、JavaScript、图像)和用户上传的媒体文件的简单方法。
步骤 1:配置 Static 文件
在 settings.py 中,定义静态文件设置:
STATIC_URL = '/static/'
STATICFILES_DIRS = [BASE_DIR / "static"]
在项目根目录中创建一个静态目录,并在其中添加静态文件(CSS、JavaScript)。
步骤 2:配置媒体文件
在 settings.py 中,定义媒体文件设置:
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / "media"
步骤 3:处理文件上传
在 myapp/models.py 中,修改 Post 模型以包含图像字段:
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
image = models.ImageField(upload_to='post_images/', blank=True, null=True)
published_date = models.DateTimeField(auto_now_add=True)
步骤 4:在模板中显示图像
在模板中,您可以像这样显示已上传的图像:
{% for post in posts %}
<h2>{{ post.title }}</h2>
{% if post.image %}
<img src="{{ post.image.url }}" alt="{{ post.title }}">
{% endif %}
<p>{{ post.content }}</p>
{% endfor %}
请记住在开发过程中包含提供媒体文件所需的配置。更新您的 urls.py 文件:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# other url patterns
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
演示 10:使用中间件进行自定义请求处理
中间件是一种在请求到达视图之前或在视图处理请求之后全局处理请求的方法。让我们创建一个自定义中间件来记录每个请求。
步骤 1:创建自定义中间件
在您的应用目录中创建一个名为 middleware.py 的文件,并添加以下代码:
import logging
logger = logging.getLogger(__name__)
class RequestLoggingMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
# Log the request path
logger.info(f"Request path: {request.path}")
response = self.get_response(request)
return response
步骤 2:将中间件添加到设置
在 settings.py 中,将您的中间件添加到 MIDDLEWARE 列表:
MIDDLEWARE = [
# other middleware
'myapp.middleware.RequestLoggingMiddleware',
]
现在,对您的 Django 应用程序的每个请求都将被记录,并显示请求的路径。这有助于调试和监控应用程序的流量。
写在最后:
- 这些演示展示了 Django 提供的一些强大功能,使其成为一个强大的 Web 开发框架。通过了解如何使用 Django 的内置身份验证、ORM、REST 框架、静态和媒体文件处理以及中间件,您可以构建可扩展且安全的 Web 应用程序。有了这些基础技能,您就可以利用 Django 实现更高级的项目和功能。
- Django 是一个功能强大且用途广泛的框架,可以处理各种 Web 开发任务,从简单的网站到复杂的 Web 应用程序。它的内置功能(例如管理界面、ORM 和强大的安全性)使其成为开发人员的热门选择。通过遵循提供的演示,您可以开始构建自己的 Django 应用程序并利用其核心功能来开发可扩展且安全的 Web 项目。
相关推荐
- SQL入门知识篇(sql入门新手教程视频)
-
一、什么是数据库?什么是SQL?1、数据库:存放数据,可以很多人一起使用2、关系数据库:多张表+各表之间的关系3、一张表需要包含列、列名、行4、主键:一列(或一组列),其值能够唯一区分表中的每个行。5...
- postgresql实现跨库查询-dblink的妙用
-
技术导语:用惯了oracle的dblink,转战postgresql,会一时摸不着头脑。本期就重点详细讲解postgresql如何安装dblink模块及如何使用dblink实现跨库查询。安装cont...
- Oracle VM VirtualBox虚拟机软件(oracle vm virtualbox win10)
-
OracleVMVirtualBox是一款完全免费的虚拟机软件,下载银行有提供下载,软件支持安装windows、linux等多个操作系统,让用户可以在一台设备上实现多个操作系统的操作。同时软件有着...
- 开源 SPL 轻松应对 T+0(开源srs)
-
T+0问题T+0查询是指实时数据查询,数据查询统计时将涉及到最新产生的数据。在数据量不大时,T+0很容易完成,直接基于生产数据库查询就可以了。但是,当数据量积累到一定程度时,在生产库中进行大数据...
- 中小企业佳选正睿ZI1TS4-4536服务器评测
-
随着科技的不断发展,各行各业对于数据使用越加频繁,同时针对服务器的选择方面也就越来越多样化和细分化。那么对于我们用户来说,如何选择符合自身业务需求和最优性价比的产品呢?笔者将通过刚刚购买的这台服务器的...
- MFC转QT:Qt基础知识(mfc和qt的区别)
-
1.Qt框架概述Qt的历史和版本Qt是一个跨平台的C++应用程序开发框架,由挪威公司Trolltech(现为QtCompany)于1991年创建。Qt的发展历程:1991年:Qt项目启动1995年...
- 数据库,QSqlTableModel(数据库有哪些)
-
QMYSQL——mysqlQSQLITE——sqliteQOICQ——orcale所需头文件.pro增加sql#include<QSqlDatabase>#include<Q...
- python通过oledb连接dbf数据库(python连接jdbc)
-
起因:因为工作需要,需要读取dbf文件和系统数据中数据进行校对,因为知道dbf文件可以用sql查询,所以想能不能像mysql/oracle那样连接,再调用执行sql方法,通过一系列百度,尝试,最终通过...
- Excel常用技能分享与探讨(5-宏与VBA简介 VBA与数据库)
-
在VBA(VisualBasicforApplications)中使用数据库(如Access、SQLServer、MySQL等)具有以下优点,适用于需要高效数据管理和复杂业务逻辑的场景:1....
- Excel常用技能分享与探讨(5-宏与VBA简介 VBA与数据库-二)
-
以下是常见数据库软件的详细配置步骤,涵盖安装、驱动配置、服务启动及基本设置,确保VBA能够顺利连接:一、MicrosoftAccess适用场景:小型本地数据库,无需独立服务。配置步骤:安装Acces...
- Windows Docker 安装(docker安装windows容器)
-
Docker并非是一个通用的容器工具,它依赖于已存在并运行的Linux内核环境。Docker实质上是在已经运行的Linux下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的L...
- Windows下安装Ubuntu虚拟机方法(windows下安装ubuntu20)
-
在Windows下安装Ubuntu虚拟机。选择使OracleVMVirtualBox安装Ubuntu虚拟机。1.下载和安装OracleVMVirtualBox:访问OracleVMVir...
- java入门教程1 - 安装和配置(win和linux)
-
windows安装和配置安装javahttps://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html目前大部分项目的...
- Centos7 安装Tomcat8服务及配置jdk1.8教程
-
1、下载jdk1.8压缩包下载地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.htmltom...
- 全网最完整的免费java教程讲义(一)——java配置和安装
-
一,安装Java1)安装JDK要学习和使用java,首先需要安装JDK(JavaDevelopemntKit),相当于java安装包。Java的下载页在甲骨文官网上:https://www.or...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- SQL入门知识篇(sql入门新手教程视频)
- postgresql实现跨库查询-dblink的妙用
- Oracle VM VirtualBox虚拟机软件(oracle vm virtualbox win10)
- 开源 SPL 轻松应对 T+0(开源srs)
- 中小企业佳选正睿ZI1TS4-4536服务器评测
- MFC转QT:Qt基础知识(mfc和qt的区别)
- 数据库,QSqlTableModel(数据库有哪些)
- python通过oledb连接dbf数据库(python连接jdbc)
- Excel常用技能分享与探讨(5-宏与VBA简介 VBA与数据库)
- Excel常用技能分享与探讨(5-宏与VBA简介 VBA与数据库-二)
- 标签列表
-
- oracle位图索引 (63)
- oracle批量插入数据 (62)
- oracle事务隔离级别 (53)
- oracle 空为0 (50)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)