Django 教程:从零开始构建动态网站

Django 教程:从零开始构建动态网站

Django 是一个高级 Python Web 框架,它鼓励快速开发和简洁、实用的设计。本教程将引导你从零开始构建一个功能齐全的动态网站,涵盖 Django 的核心概念和常用技巧。

一、环境搭建

  1. 安装 Python: 确保你的系统上安装了 Python 3.7 或更高版本。可以从 Python 官网下载安装包。

  2. 创建虚拟环境: 使用虚拟环境可以隔离项目依赖,避免版本冲突。

bash
python3 -m venv myenv # 创建名为 myenv 的虚拟环境
source myenv/bin/activate # 激活虚拟环境 (Linux/macOS)
myenv\Scripts\activate # 激活虚拟环境 (Windows)

  1. 安装 Django:

bash
pip install django

二、创建项目和应用

  1. 创建项目:

bash
django-admin startproject mysite

  1. 创建应用: 进入项目目录,创建名为 blog 的应用。

bash
cd mysite
python manage.py startapp blog

  1. 注册应用:mysite/settings.py 中的 INSTALLED_APPS 列表中添加 'blog'

python
INSTALLED_APPS = [
# ...
'blog',
]

三、定义模型

blog/models.py 中定义博客文章的模型:

```python
from django.db import models
from django.utils import timezone

class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
created_date = models.DateTimeField(default=timezone.now)
published_date = models.DateTimeField(blank=True, null=True)

def publish(self):
    self.published_date = timezone.now()
    self.save()

def __str__(self):
    return self.title

```

四、创建数据库迁移

bash
python manage.py makemigrations blog
python manage.py migrate

五、创建管理员用户

bash
python manage.py createsuperuser

六、定义视图

blog/views.py 中定义视图函数:

```python
from django.shortcuts import render, get_object_or_404
from .models import Post

def post_list(request):
posts = Post.objects.filter(published_date__isnull=False).order_by('-published_date')
return render(request, 'blog/post_list.html', {'posts': posts})

def post_detail(request, pk):
post = get_object_or_404(Post, pk=pk)
return render(request, 'blog/post_detail.html', {'post': post})
```

七、配置 URL 路由

  1. 创建 blog/urls.py:

```python
from django.urls import path
from . import views

urlpatterns = [
path('', views.post_list, name='post_list'),
path('post//', views.post_detail, name='post_detail'),
]
```

  1. 包含应用的 URL 到主项目 URL 配置 mysite/urls.py:

    ```python
    from django.contrib import admin
    from django.urls import path, include

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

八、创建模板

blog 应用目录下创建 templates/blog 目录,并在其中创建 post_list.htmlpost_detail.html 文件:

  • post_list.html:

```html
{% extends 'base.html' %}

{% block content %}
{% for post in posts %}

{{ post.title }}

{{ post.content|linebreaksbr }}

Published on: {{ post.published_date }}

{% endfor %}
{% endblock %}
```

  • post_detail.html:

```html
{% extends 'base.html' %}

{% block content %}

{{ post.title }}

{{ post.content|linebreaksbr }}

Published on: {{ post.published_date }}

{% endblock %}
```

  • base.html (在 templates 目录下创建):

```html




My Blog

{% block content %}
{% endblock %}


```

九、运行开发服务器

bash
python manage.py runserver

十、进阶学习

  • 静态文件管理: 学习如何管理 CSS、JavaScript 和图片等静态文件。
  • 表单处理: 创建表单以允许用户提交数据。
  • 用户认证: 实现用户注册、登录和注销功能。
  • 数据库关系: 探索更复杂的数据库关系,如一对多和多对多关系.
  • Django REST Framework: 构建强大的 API。
  • 部署: 学习如何将 Django 项目部署到生产环境。

本教程提供了一个构建简单博客的入门指南。 Django 提供了丰富的功能和强大的工具,可以帮助你构建各种类型的 Web 应用程序。 通过不断学习和实践,你可以掌握 Django 的精髓,并构建出功能丰富、性能优异的动态网站。 记住要查阅 Django 官方文档,它是最全面和权威的学习资源. 探索 Django 的世界,释放你的创造力!

THE END