Django 创建项目

目录

  1. 简介
  2. Django 环境准备
  3. 创建 Django 项目
  4. 创建 Django 应用
  5. 配置数据库
  6. 创建模型
  7. 创建视图
  8. URL 路由
  9. 模板系统
  10. 静态文件管理
  11. 用户认证
  12. 示例项目:博客系统
  1. 总结

简介

Django 是一个高效的 Python Web 框架,旨在简化 Web 应用程序的开发。它遵循 MVC(模型-视图-控制器)设计模式,使开发者能够快速构建功能强大的 Web 应用。本文将详细介绍如何从零开始创建一个 Django 项目,并通过一个博客系统的示例来演示其核心功能。

Django 环境准备

安装 Python

在安装 Django 之前,确保你的系统上已安装 Python。可以在终端中运行以下命令来检查:

bashCopy Code
python --version

如果未安装 Python,可以访问 Python 官网 进行下载和安装。

安装 Django

使用 pip 安装 Django。在终端中运行以下命令:

bashCopy Code
pip install django

完成后,验证 Django 是否安装成功:

bashCopy Code
django-admin --version

创建 Django 项目

创建项目骨架

使用 Django 提供的命令行工具创建项目。在终端中执行以下命令:

bashCopy Code
django-admin startproject myproject

替换 myproject 为你想要的项目名称。

项目结构解析

创建成功后,你的项目目录结构将如下所示:

Copy Code
myproject/ manage.py myproject/ __init__.py settings.py urls.py asgi.py wsgi.py
  • manage.py:用于管理项目的命令行工具。
  • settings.py:项目的配置文件。
  • urls.py:URL 路由配置。
  • wsgi.pyasgi.py:用于部署的接口。

创建 Django 应用

应用概念

在 Django 中,一个项目可以包含多个应用,每个应用负责某一特定功能。比如,在一个博客系统中,可以有文章管理、评论系统等不同的应用。

创建应用

使用以下命令创建应用:

bashCopy Code
python manage.py startapp blog

这将在项目根目录下创建一个名为 blog 的目录。

配置数据库

使用 SQLite

Django 默认使用 SQLite 数据库。你可以在 settings.py 中查看数据库配置:

pythonCopy Code
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / "db.sqlite3", } }

连接其他数据库(如 PostgreSQL)

如果你希望使用 PostgreSQL,请先安装 psycopg2

bashCopy Code
pip install psycopg2

然后在 settings.py 中修改数据库配置:

pythonCopy Code
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'your_db_name', 'USER': 'your_db_user', 'PASSWORD': 'your_db_password', 'HOST': 'localhost', 'PORT': '', } }

创建模型

模型定义

blog/models.py 中定义模型。例如,要创建一个文章模型:

pythonCopy Code
from django.db import models class Post(models.Model): title = models.CharField(max_length=100) content = models.TextField() created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return self.title

迁移数据库

在创建完模型后,需要对数据库进行迁移:

bashCopy Code
python manage.py makemigrations blog python manage.py migrate

创建视图

函数视图与类视图

在 Django 中,可以使用函数视图或类视图定义处理请求的逻辑。以下是一个简单的函数视图示例:

pythonCopy Code
from django.http import HttpResponse def home(request): return HttpResponse("Welcome to my blog!")

URL 路由

配置 URL 路由

myproject/urls.py 中配置 URL 路由:

pythonCopy Code
from django.contrib import admin from django.urls import path from blog.views import home urlpatterns = [ path('admin/', admin.site.urls), path('', home, name='home'), ]

模板系统

使用模板

Django 提供强大的模板系统来渲染 HTML。首先,在 blog 应用中创建一个 templates 目录,然后在其中创建 home.html 文件:

htmlCopy Code
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>My Blog</title> </head> <body> <h1>Welcome to my blog!</h1> </body> </html>

在视图中渲染模板:

pythonCopy Code
from django.shortcuts import render def home(request): return render(request, 'home.html')

静态文件管理

Django 允许你处理静态文件(如 CSS 和 JavaScript)。在 settings.py 中配置静态文件路径:

pythonCopy Code
STATIC_URL = '/static/'

创建 static 目录并在其中放置静态文件。

用户认证

Django 内置用户认证系统,可以很方便地管理用户注册、登录等功能。使用以下命令创建用户:

bashCopy Code
python manage.py createsuperuser

示例项目:博客系统

让我们构建一个简单的博客系统,展示如何使用 Django 完成一个完整的项目。

项目结构

最终的项目结构应如下所示:

Copy Code
myproject/ manage.py myproject/ ... blog/ migrations/ templates/ home.html static/ models.py views.py urls.py

模型设计

blog/models.py 中,我们可以扩展已有的 Post 模型,添加一个评论模型:

pythonCopy Code
class Comment(models.Model): post = models.ForeignKey(Post, on_delete=models.CASCADE) author = models.CharField(max_length=100) content = models.TextField() created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return f'Comment by {self.author} on {self.post}'

视图实现

views.py 中实现文章列表视图和详情视图:

pythonCopy Code
from django.shortcuts import render, get_object_or_404 from .models import Post def post_list(request): posts = Post.objects.all() return render(request, 'post_list.html', {'posts': posts}) def post_detail(request, pk): post = get_object_or_404(Post, pk=pk) return render(request, 'post_detail.html', {'post': post})

前端展示

创建 post_list.htmlpost_detail.html 模板来展示数据。以下是 post_list.html 的示例:

htmlCopy Code
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Blog Posts</title> </head> <body> <h1>Blog Posts</h1> <ul> {% for post in posts %} <li><a href="{% url 'post_detail' post.pk %}">{{ post.title }}</a></li> {% endfor %} </ul> </body> </html>

总结

本文介绍了如何使用 Django 创建一个简单的博客项目,从环境准备到创建项目、应用、模型、视图等各个步骤。Django 强大的功能使得开发 Web 应用变得更加高效和便捷。通过本示例,你可以进一步探索 Django 的更多特性和功能,构建更复杂的应用。

希望这篇文章能帮助你快速上手 Django 开发,开启你的 Web 开发之旅!