您好,登录后才能下订单哦!
# Django基础知识点有哪些
## 一、Django框架概述
Django是一个基于Python的高级Web框架,它遵循MVC(模型-视图-控制器)设计模式,但在Django中通常被称为MTV(模型-模板-视图)模式。Django以其"开箱即用"的特性著称,提供了许多内置功能,如用户认证、内容管理、站点地图等。
### 核心特点
1. **快速开发**:DRY(Don't Repeat Yourself)原则
2. **安全性**:自动处理SQL注入、XSS等安全问题
3. **可扩展性**:支持从小型项目到大型企业应用
4. **完善的文档**:官方文档详尽且示例丰富
## 二、Django项目结构
典型的Django项目结构如下:
myproject/ ├── manage.py # 项目管理脚本 ├── myproject/ # 项目主目录 │ ├── init.py │ ├── settings.py # 项目配置 │ ├── urls.py # 主路由配置 │ └── wsgi.py # WSGI配置 └── myapp/ # 应用目录 ├── migrations/ # 数据库迁移文件 ├── init.py ├── admin.py # 管理后台配置 ├── apps.py # 应用配置 ├── models.py # 数据模型 ├── tests.py # 测试代码 ├── urls.py # 应用路由 └── views.py # 视图函数
## 三、核心组件详解
### 1. 模型(Models)
Django的ORM系统允许使用Python类定义数据模型:
```python
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey('Author', on_delete=models.CASCADE)
publish_date = models.DateField()
def __str__(self):
return self.title
常用字段类型:
- CharField
:字符串字段
- IntegerField
:整数字段
- TextField
:长文本
- BooleanField
:布尔值
- DateTimeField
:日期时间
视图处理业务逻辑并返回响应:
from django.shortcuts import render
from .models import Book
def book_list(request):
books = Book.objects.all()
return render(request, 'books/list.html', {'books': books})
视图类型:
- 函数视图
- 类视图(如ListView
, DetailView
)
- API视图(DRF框架)
Django模板语言(DTL)示例:
{% for book in books %}
<div class="book">
<h2>{{ book.title }}</h2>
<p>作者: {{ book.author.name }}</p>
</div>
{% empty %}
<p>暂无书籍</p>
{% endfor %}
模板继承:
<!-- base.html -->
<html>
<head><title>{% block title %}默认标题{% endblock %}</title></head>
<body>
{% block content %}{% endblock %}
</body>
</html>
<!-- child.html -->
{% extends "base.html" %}
{% block title %}子页面标题{% endblock %}
{% block content %}
<h1>页面内容</h1>
{% endblock %}
URL配置示例:
# myproject/urls.py
from django.urls import path
from myapp import views
urlpatterns = [
path('books/', views.book_list, name='book-list'),
path('books/<int:pk>/', views.book_detail, name='book-detail'),
]
路由技术:
- 路径参数(<int:pk>
)
- 命名路由(name
属性)
- 路由包含(include()
)
内置管理后台的配置:
# admin.py
from django.contrib import admin
from .models import Book
@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'author', 'publish_date')
search_fields = ('title', 'author__name')
list_filter = ('publish_date',)
常用功能: - 自定义列表显示 - 搜索和过滤 - 批量操作 - 内联编辑
Django表单系统示例:
# forms.py
from django import forms
from .models import Comment
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ('content', 'email')
widgets = {
'content': forms.Textarea(attrs={'rows': 4}),
}
表单处理流程: 1. GET请求时显示空表单 2. POST请求时验证数据 3. 有效时保存数据 4. 无效时显示错误
内置认证系统功能:
# 登录视图示例
from django.contrib.auth import authenticate, login
def login_view(request):
if request.method == 'POST':
user = authenticate(
username=request.POST['username'],
password=request.POST['password']
)
if user is not None:
login(request, user)
return redirect('home')
return render(request, 'login.html')
主要组件:
- 用户模型(User
)
- 权限系统(Permissions)
- 用户组(Groups)
- 密码哈希处理
Django请求处理流程中的中间件:
# 自定义中间件示例
class SimpleMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
# 请求处理前的代码
response = self.get_response(request)
# 响应处理后的代码
return response
内置中间件: - 安全中间件 - 会话支持 - CSRF保护 - 缓存支持
from django.test import TestCase
from .models import Book
class BookTestCase(TestCase):
def setUp(self):
Book.objects.create(title="测试书籍")
def test_book_str(self):
book = Book.objects.get(title="测试书籍")
self.assertEqual(str(book), "测试书籍")
print()
调试基本部署步骤:
1. 设置DEBUG = False
2. 配置ALLOWED_HOSTS
3. 收集静态文件:python manage.py collectstatic
4. 配置生产数据库
5. 设置WSGI服务器(如Gunicorn)
6. 配置Web服务器(如Nginx)
掌握这些Django基础知识点后,您已经具备了开发基本Web应用的能力。Django的强大之处在于其深度和灵活性,随着实践的深入,您会发现更多高级特性和最佳实践。建议从官方文档开始,逐步探索框架的各个层面。 “`
这篇文章涵盖了Django的主要基础知识点,总字数约1750字,采用Markdown格式编写,包含代码示例和结构化内容。您可以根据需要进一步扩展或调整各部分内容。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。