📅  最后修改于: 2023-12-03 15:00:27.587000             🧑  作者: Mango
Django 是一款基于 Python 的开源 Web 框架。它采用了 MTV(Model-Template-View)的模式来构建 Web 应用程序。Django 的设计理念是 DRY(Don't Repeat Yourself),即尽量避免重复的代码,提高开发效率。
模型是 Django 中处理数据的核心,它们通常是数据库中的表格。模型可以在一个 Python 类中定义,该类继承了 Django 的 Model 类,而每个模型是一个 Python 类的实例。模型中的每个属性代表着一个表格列,而这些属性都是 Django 内置的字段类型或自定义的字段类型。
定义一个模型的示例:
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.CharField(max_length=200)
View 是 Django Web 应用程序的核心,它们决定了页面如何响应 HTTP 请求。View 是 Python 函数或类,它接受一个 HTTP 请求并返回一个 HTTP 请求,通常是一个 HTML 页面。
定义一个 View 函数的示例:
from django.http import HttpResponse
def home(request):
return HttpResponse('Hello, world!')
定义一个 View 类的示例:
from django.views import View
from django.http import HttpResponse
class HomeView(View):
def get(self, request):
return HttpResponse('Hello, world!')
URLconf 是 Django 中连接 URL 和 View 的映射表。它告诉 Django 当一个 HTTP 请求到达时应该把请求发送到哪个 View。URLconf 通常定义在一个 Python 模块中。
URLconf 使用正则表达式来匹配 URL。例如,可以使用正则表达式 r'^/books/(?P<id>\d+)/$'
来匹配以 /books/
开头,后面跟着一个数字 ID,以 /
结尾的 URL。Django 会把匹配到的 ID 作为 View 函数或类的参数来调用它。
定义 URLconf 的示例:
from django.urls import path
from .views import home, HomeView, BookView
urlpatterns = [
path('', home),
path('home/', HomeView.as_view()),
path('books/<int:id>/', BookView.as_view()),
]
Middleware 是 Django 中的一种机制,它允许在一个请求和一个响应之间进行一些处理。Middleware 可以拦截请求或响应,并在它们抵达 View 之前或之后执行自定义的代码。
Middleware 可以用于很多不同的任务,例如记录日志、加密请求数据、身份验证和授权等。
定义 Middleware 的示例:
class LoggingMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
print(f'Request: {request}')
response = self.get_response(request)
print(f'Response: {response}')
return response
Django shell 是一个交互式 Python 解释器,而且它已经预加载了 Django 环境。这意味着你可以使用 Django 的 ORM 来和数据库进行交互,而无需编写代码或启动 Web 服务器。
启动 Django shell 的命令:python manage.py shell
Django Debug Toolbar 是一个方便的工具,可以帮助你在开发过程中诊断性能问题。它可以显示一个 Web 页面,其中包含有关每个请求的详细信息,以及缓存、数据库查询和响应时间等方面的统计数据。
安装 Django Debug Toolbar 的命令:pip install django-debug-toolbar
将 Debug Toolbar 添加到你的应用的中间件列表中,并添加对 DEBUG_TOOLBAR 应用程序的 INSTALLED_APPS 设置。具体操作请查看官方文档。
Django FileUploadHandler 是一个内置的上传处理程序,它可以处理文件上传,并将上传的文件存储到磁盘中。你可以使用它来上传单个文件或多个文件。
定义一个视图函数处理文件上传请求的示例:
from django.http import HttpResponseBadRequest
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def upload_file(request):
if request.method == 'POST' and request.FILES:
file = request.FILES['file']
# 处理上传的文件
return HttpResponse('OK')
else:
return HttpResponseBadRequest('Bad request')
在模板中使用 enctype="multipart/form-data"
来支持文件上传。
<form action="{% url 'upload_file' %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="file" id="file">
<input type="submit" value="Upload">
</form>
本文介绍了 Django 的基础知识以及一些实用技巧,希望能对初学者有所帮助。Django 是一个强大的 Web 开发框架,具有灵活性和可扩展性,适合开发大型 Web 应用程序。