Django 学习指南


📚 详细学习路线

阶段1:基础准备

1.1 Python 基础

必备知识:

  • Python 语法基础
  • 面向对象编程(类、继承、多态)
  • 函数和模块
  • 异常处理
  • 虚拟环境使用

学习资源:

1.2 Web 基础
  • HTTP 协议基础
  • HTML/CSS/JavaScript 基础
  • 数据库基础(SQL)

阶段2:Django 核心概念

2.1 Django 入门
bash 复制代码
# 环境设置
python -m venv myenv
source myenv/bin/activate  # Linux/Mac
# 或 myenv\Scripts\activate  # Windows

pip install django
django-admin startproject myproject
cd myproject
python manage.py startapp myapp
2.2 项目结构理解
复制代码
myproject/
├── manage.py
├── myproject/
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── myapp/
    ├── migrations/
    ├── __init__.py
    ├── admin.py
    ├── apps.py
    ├── models.py
    ├── tests.py
    ├── views.py
    └── urls.py
2.3 核心组件深入学习
Models(模型)
python 复制代码
# myapp/models.py
from django.db import models
from django.contrib.auth.models import User

class Category(models.Model):
    name = models.CharField(max_length=100)
    created_at = models.DateTimeField(auto_now_add=True)
    
    def __str__(self):
        return self.name

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    is_published = models.BooleanField(default=False)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    
    class Meta:
        ordering = ['-created_at']
    
    def __str__(self):
        return self.title
Views(视图)
python 复制代码
# myapp/views.py
from django.shortcuts import render, get_object_or_404
from django.views.generic import ListView, DetailView, CreateView
from .models import Post
from .forms import PostForm

# 函数视图
def post_list(request):
    posts = Post.objects.filter(is_published=True)
    return render(request, 'blog/post_list.html', {'posts': posts})

# 类视图
class PostListView(ListView):
    model = Post
    template_name = 'blog/post_list.html'
    context_object_name = 'posts'
    paginate_by = 10
    
    def get_queryset(self):
        return Post.objects.filter(is_published=True)

class PostDetailView(DetailView):
    model = Post
    template_name = 'blog/post_detail.html'

class PostCreateView(CreateView):
    model = Post
    form_class = PostForm
    template_name = 'blog/post_form.html'
    success_url = '/posts/'
URLs(路由)
python 复制代码
# myproject/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('myapp.urls')),
]

# myapp/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.PostListView.as_view(), name='post_list'),
    path('post/<int:pk>/', views.PostDetailView.as_view(), name='post_detail'),
    path('post/new/', views.PostCreateView.as_view(), name='post_create'),
]
Templates(模板)
html 复制代码
<!-- templates/base.html -->
<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}My Blog{% endblock %}</title>
</head>
<body>
    <nav>
        <a href="{% url 'post_list' %}">Home</a>
    </nav>
    <main>
        {% block content %}
        {% endblock %}
    </main>
</body>
</html>
相关推荐
꯭自꯭闭꯭28 分钟前
达梦DMDSC主备搭建
linux·服务器·数据库
用户EasyAdminBlazor38 分钟前
EasyAdminBlazor 审批并发控制:两个人同时审批为什么只能成功一个?
数据库
杨云龙UP1 小时前
TDengine Community 超级表建表实战:统一21个TAG与DOUBLE/字符串数据模板
运维·服务器·数据库·时序数据库·tdengine·涛思数据·stable建表
katasea1 小时前
第05章:信创技术栈选型:服务器、操作系统、数据库、中间件适配对比
服务器·数据库·中间件
梓沂1 小时前
记一次 Oracle 测试库自动刷新脚本的踩坑实录
数据库·oracle
2501_931803752 小时前
MySQL 索引核心原理
数据库·mysql
浪潮IT馆2 小时前
Windows 10 安装 PostgreSQL 9.6.24 完整教程
数据库·windows·postgresql
高洁012 小时前
AI视频生成技术:从静态图文到动态视觉的内容智能革命
python·深度学习·django·transformer·tornado
Elastic 中国社区官方博客3 小时前
14 个 alerts,1 个 incident:使用 Elasticsearch 中的 ES|QL 衡量 alerting rule 噪声
大数据·运维·数据库·elasticsearch·搜索引擎·全文检索
资深技术分享员3 小时前
遗留系统——把“改不动的老系统“接过来
java·服务器·数据库