Django是一个用Python编写的高级Web框架,它鼓励快速开发和干净、实用的设计。Django遵循MVC(Model-View-Controller)架构模式,但Django团队更喜欢将其称为MVT(Model-View-Template),其中Model代表数据存取层,View代表业务逻辑层,Template代表表现层。下面分别介绍Django的路由、视图、模板和ORM。
1. 路由(URLconf)
Django的路由系统负责将URL路径映射到相应的视图函数或视图类上。路由定义在项目的urls.py文件中,Django通过匹配请求的URL来调用相应的视图。
路由定义规则:
- 每个urls.py文件必须包含一个名为urlpatterns的列表,用于定义路由信息。
- 路由通常使用
path()
或re_path()
函数来定义。path()
用于普通路径,而re_path()
(在Django 2.0之前称为url()
)用于正则路径。 - 路由函数可以设置三个参数:路由地址(route)、视图函数或视图类(views)、以及路由名称(name,可选)。
示例:
python复制代码
from django.urls import path | |
from . import views | |
urlpatterns = [ | |
path('admin/', admin.site.urls), | |
path('index/', views.index, name='index'), | |
] |
2. 视图(Views)
视图是Django中处理请求并返回响应的函数或类。视图接收一个HttpRequest对象作为输入,并返回一个HttpResponse对象作为输出。
视图函数:
- 视图函数是一个Python函数,它接收HttpRequest对象作为参数,并返回一个HttpResponse对象。
- 视图函数通常定义在应用的views.py文件中。
视图类:
- 视图类是一个继承自Django的View类的Python类。
- 视图类通过定义不同的方法来处理不同类型的HTTP请求(如GET、POST等)。
示例:
python复制代码
from django.http import HttpResponse | |
def index(request): | |
return HttpResponse("Hello, world. You're at the index.") | |
from django.views import View | |
from django.http import HttpResponse | |
class IndexView(View): | |
def get(self, request): | |
return HttpResponse("Hello, world. You're at the index via class-based view.") |
3. 模板(Templates)
Django的模板系统允许开发者以简洁的方式定义HTML页面的内容。模板的设计实现了视图与表现的解耦,使得开发者可以轻松地修改页面的外观而不必改动业务逻辑。
模板语言:
- Django模板语言(DTL)允许在HTML中嵌入变量和逻辑控制结构。
- 模板中的变量使用双大括号
{{ }}
包裹,而逻辑控制结构(如循环、条件判断)则使用{% %}
包裹。
模板继承与包含:
- Django模板支持继承,允许你构建一个基本的“骨架”模板,它包含站点共有的元素,并可以定义能够被子模板覆盖的blocks。
- 模板包含允许你在一个模板中插入另一个模板的内容。
4. ORM(对象关系映射)
Django的ORM提供了一种高级的方式来操作数据库。它允许开发者使用Python代码来定义模型(Model),这些模型映射到数据库中的表。通过ORM,开发者可以无需编写SQL语句就能执行数据库的增删改查操作。
模型定义:
- 在Django中,模型通常定义在应用的models.py文件中。
- 每个模型都继承自
django.db.models.Model
类。 - 模型的字段通过定义类属性来指定,如
CharField
、IntegerField
等。
示例:
python复制代码
from django.db import models | |
class Person(models.Model): | |
name = models.CharField(max_length=100) | |
age = models.IntegerField() |
查询:
- Django的ORM提供了丰富的API来执行数据库查询,如
filter()
、exclude()
、get()
等。 - 这些API允许开发者以Pythonic的方式构建复杂的查询条件。
通过以上介绍,可以看出Django的路由、视图、模板和ORM共同构成了Django框架的核心,使得开发者能够高效地开发Web应用。