Django 是一个高级的 Python Web 框架,鼓励快速开发和干净、实用的设计。它遵循“不要重复造轮子(Don't Repeat Yourself, DRY)”的原则,内置了诸如用户认证、内容管理、表单处理等常见功能,非常适合构建内容驱动的网站。
本文将带你从零开始,逐步了解 Django 的基本概念、项目结构、视图、模板、模型、路由等核心内容,并通过一个简单的博客应用示例,帮助你快速上手 Django 开发。
Django 是一个由 Python 编写的开源 Web 框架,采用 MTV(Model-Template-View) 架构模式:
确保你已安装 Python 3.8+,可以通过以下命令检查:
python --version
python -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
也可以使用conda
pip install django
验证是否安装成功:
python -m django --version
django-admin startproject mysite
cd mysite
目录结构如下:
mysite/
├── manage.py
└── mysite/
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
python manage.py runserver
访问 http://127.0.0.1:8000/
,看到 Django 的欢迎页面表示项目创建成功。
Django 鼓励将功能模块化,一个项目可以包含多个应用(App)。
python manage.py startapp blog
目录结构如下:
blog/
├── migrations/
├── __init__.py
├── admin.py
├── apps.py
├── models.py
├── tests.py
└── views.py
打开 mysite/settings.py
,在 INSTALLED_APPS
中添加:
INSTALLED_APPS = [
...
'blog',
]
在 blog/views.py
中添加:
from django.http import HttpResponse
def index(request):
return HttpResponse("欢迎来到我的博客!")
blog
目录下创建 urls.py
:# blog/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
urls.py
中包含:# mysite/urls.py
from django.urls import include, path
urlpatterns = [
path('blog/', include('blog.urls')),
]
现在访问 http://127.0.0.1:8000/blog/
,你会看到页面显示“欢迎来到我的博客!”。
在 blog
应用下创建 templates/blog/
目录:
blog/
└── templates/
└── blog/
└── index.html
在 index.html
中写入:
我的博客
欢迎来到我的博客!
# blog/views.py
from django.shortcuts import render
def index(request):
return render(request, 'blog/index.html')
刷新页面,你会看到渲染后的 HTML 页面。
在 blog/models.py
中定义一个博客文章模型:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
pub_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
bash
深色版本
python manage.py makemigrations
python manage.py migrate
在 blog/admin.py
中注册模型:
from django.contrib import admin
from .models import Post
admin.site.register(Post)
python manage.py createsuperuser
登录 http://127.0.0.1:8000/admin
,你可以添加、编辑、删除博客文章。
def index(request):
posts = Post.objects.all()
return render(request, 'blog/index.html', {'posts': posts})
我的博客
{% for post in posts %}
- {{ post.title }} - {{ post.pub_date }}
{% endfor %}
通过本文,你已经完成以下内容:
这只是 Django 的冰山一角。接下来可以学习:
命令 |
说明 |
|
创建项目 |
|
创建应用 |
|
启动开发服务器 |
|
生成迁移文件 |
|
应用迁移 |
|
创建管理员用户 |
|
进入 Django Shell |
|
运行测试 |