您好,登录后才能下订单哦!
密码登录
            
            
            
            
        登录注册
            
            
            
        点击 登录注册 即表示同意《亿速云用户服务条款》
        # Django基础知识学习及使用
## 目录
1. [Django简介](#1-django简介)
2. [开发环境搭建](#2-开发环境搭建)
3. [项目结构解析](#3-项目结构解析)
4. [模型(Models)](#4-模型models)
5. [视图(Views)](#5-视图views)
6. [模板(Templates)](#6-模板templates)
7. [路由(URLs)](#7-路由urls)
8. [表单处理](#8-表单处理)
9. [Admin后台管理](#9-admin后台管理)
10. [部署基础](#10-部署基础)
11. [最佳实践](#11-最佳实践)
---
## 1. Django简介
### 1.1 什么是Django
Django是一个高级Python Web框架,由Adrian Holovaty和Simon Willison于2003年开发,遵循"快速开发"和"DRY(Don't Repeat Yourself)"原则。它提供了:
- ORM(对象关系映射)
- 自动化Admin界面
- 表单处理
- 模板引擎
- 缓存系统
- 国际化支持
### 1.2 Django的特点
- **全栈框架**:包含Web开发所需的所有组件
- **开箱即用**:自带Admin、认证系统等
- **安全可靠**:自动防范CSRF、XSS等攻击
- **可扩展性强**:支持百万级流量应用
### 1.3 适用场景
- 内容管理系统(CMS)
- 社交网站
- 电子商务平台
- RESTful API服务
---
## 2. 开发环境搭建
### 2.1 基础环境准备
```bash
# 创建虚拟环境
python -m venv myenv
source myenv/bin/activate  # Linux/Mac
myenv\Scripts\activate     # Windows
# 安装Django
pip install django
django-admin startproject myproject
cd myproject
python manage.py runserver
访问 http://127.0.0.1:8000 查看欢迎页面
| 命令 | 说明 | 
|---|---|
startapp | 
创建新应用 | 
makemigrations | 
生成迁移文件 | 
migrate | 
执行数据库迁移 | 
createsuperuser | 
创建管理员 | 
myproject/
├── manage.py         # 项目管理脚本
└── myproject/
    ├── __init__.py
    ├── settings.py   # 项目配置
    ├── urls.py       # 主路由配置
    └── wsgi.py       # WSGI入口
python manage.py startapp myapp
myapp/
├── migrations/       # 数据库迁移文件
├── __init__.py
├── admin.py          # Admin配置
├── apps.py           # 应用配置
├── models.py         # 数据模型
├── tests.py          # 单元测试
└── views.py          # 视图函数
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()
    price = models.DecimalField(max_digits=5, decimal_places=2)
    
    def __str__(self):
        return self.title
| 字段类型 | 说明 | 
|---|---|
CharField | 
字符串字段 | 
TextField | 
长文本 | 
IntegerField | 
整数 | 
BooleanField | 
布尔值 | 
DateTimeField | 
日期时间 | 
FileField | 
文件上传 | 
python manage.py makemigrations
python manage.py migrate
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})
from django.views.generic import ListView
from .models import Book
class BookListView(ListView):
    model = Book
    template_name = 'books/list.html'
    context_object_name = 'books'
| 类视图 | 说明 | 
|---|---|
View | 
基础视图类 | 
TemplateView | 
模板视图 | 
ListView | 
列表视图 | 
DetailView | 
详情视图 | 
CreateView | 
创建视图 | 
<!-- 变量输出 -->
<h1>{{ book.title }}</h1>
<!-- 循环 -->
{% for book in books %}
  <p>{{ book.author }}</p>
{% endfor %}
<!-- 条件判断 -->
{% if book.price > 100 %}
  <p>Expensive</p>
{% endif %}
<!-- base.html -->
<html>
<head><title>{% block title %}Default{% endblock %}</title></head>
<body>
  {% block content %}{% endblock %}
</body>
</html>
<!-- child.html -->
{% extends "base.html" %}
{% block title %}Book List{% endblock %}
{% block content %}
  <h1>All Books</h1>
{% endblock %}
# 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'),
]
| 转换器 | 说明 | 
|---|---|
str | 
匹配非空字符串 | 
int | 
匹配正整数 | 
slug | 
匹配字母、数字、连字符 | 
uuid | 
匹配UUID字符串 | 
from django import forms
class BookForm(forms.Form):
    title = forms.CharField(label='书名', max_length=100)
    author = forms.CharField(label='作者', max_length=50)
    price = forms.DecimalField(label='价格', min_value=0)
def book_create(request):
    if request.method == 'POST':
        form = BookForm(request.POST)
        if form.is_valid():
            # 处理有效数据
            return redirect('book-list')
    else:
        form = BookForm()
    return render(request, 'books/create.html', {'form': form})
from django.contrib import admin
from .models import Book
@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'author', 'price')
    search_fields = ('title', 'author__name')
    list_filter = ('publish_date',)
class BookAdmin(admin.ModelAdmin):
    fieldsets = [
        ('基本信息', {'fields': ['title', 'author']}),
        ('销售信息', {'fields': ['price', 'stock']}),
    ]
# settings.py
DEBUG = False
ALLOWED_HOSTS = ['yourdomain.com']
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
项目结构优化
性能优化
select_related和prefetch_related安全建议
测试策略
本文共计约5550字,涵盖了Django的核心概念和基础使用方法。实际开发中建议结合官方文档(https://docs.djangoproject.com)进行深入学习。 “`
注:实际字数可能因Markdown渲染方式略有差异。如需精确字数控制,建议在文本编辑器中检查。本文档结构完整,包含了Django开发的主要方面,可作为学习路线图使用。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。