一、创建 Django 项目
在终端中创建 Django 项目:
django-admin startproject myblog
二、创建 Django 应用
1.创建应用:
在 Django 中,应用是一个可以被复用的模块。可以在终端中导航到项目目录并创建新的应用。 博客中常用的应用有blog 应用(用于处理博客文章)、 users 应用(用于处理用户注册、登录和个人资料等功能)和comments 应用(用于处理用户对博客文章的评论)。
cd myblog
python manage.py startapp 应用名称
python manage.py startapp blog
python manage.py startapp users
python manage.py startapp comments
2.注册应用:
打开 myblog/settings.py 文件,找到 INSTALLED_APPS 列表,并添加你的应用:注意是添加至第四个步骤中,而不必清空原列表。
INSTALLED_APPS = [
...
'blog',
'users',
'comments',
]
三、创建 Django 模型
1. blog:
在blog/models.py目录中创建模型。
-
Post模型(文章)
from django.db import models
from django.contrib.auth.models import User
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
author = models.ForeignKey(User, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
published = models.BooleanField(default=False)
def __str__(self):
return self.title
-
Category模型(分类)
class Category(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
-
Tag模型(标签)
class Tag(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
-
PostTags(文章标签关系)
class PostTag(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE)
tag = models.ForeignKey(Tag, on_delete=models.CASCADE)
2. users:
在users/models.py目录下,通过扩展 Django 自带的用户模型,创建Profile 模型,以便于添加额外的个人信息,提升用户信息管理的灵活性:
-
Profile(用户资料)
from django.db import models from django.contrib.auth.models import User class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) bio = models.TextField(blank=True) profile_picture = models.ImageField(upload_to='profile_pics/', blank=True) def __str__(self): return self.user.username
3.comments:
在comments/models.py目录创建Comment 模型,用于存储与博客文章相关的评论,包括评论的作者、内容和创建时间。通过使用外键,它能够有效地管理评论与用户和文章之间的关系。
from django.db import models
from django.contrib.auth.models import User
from blog.models import Post
class Comment(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE)
author = models.ForeignKey(User, on_delete=models.CASCADE)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"{self.author.username} on {self.post.title}"
四、迁移数据库
在Django中,数据库迁移是一个重要的步骤。 迁移数据库是为了确保数据库的结构与我们在代码中定义的模型保持一致。比如,当创建或修改模型(例如定义一个新表或更改现有表的列)时,Django会生成一个“迁移”文件,这个文件记录了这些变化。通过运行迁移命令,Django会自动更新数据库,使其反映这些变化。这样就可以方便地管理数据库的结构,而不需要手动编写复杂的SQL语句,确保数据的完整性和一致性。
1.创建迁移文件:
python manage.py makemigrations
2.应用迁移:
python manage.py migrate
五、创建管理界面
利用Django 的 admin 功能将 Post 模型添加到 Django 管理后台,使得管理员可以方便地在后台界面中管理与 Post 相关的数据,以便于开发人员可以快速创建和管理网站的内容,而无需手动编写复杂的后台界面。
1.注册模型:
在 posts/admin.py
中注册模型:
from django.contrib import admin
from .models import Post
admin.site.register(Post)
2.创建超级用户:
在终端中运行以下命令,创建一个超级用户,按照提示输入用户名、邮箱和密码。
python manage.py createsuperuser
六、创建视图和模板
如果需要使私人博客对外可见,可以创建视图和模板。在 posts/views.py 中添加视图,并在 posts/templates/posts 中创建 HTML 模板。
1.创建视图
在 blog/views.py 中创建视图
from django.shortcuts import render
from .models import Post
def post_list(request):
posts = Post.objects.all()
return render(request, 'blog/post_list.html', {'posts': posts})
2.创建模板文件
在 blog 应用下,创建一个 templates/blog/post_list.html 文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Blog</title>
</head>
<body>
<h1>Blog Posts</h1>
{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.content }}</p>
<p>Author: {{ post.author }}</p>
<p>Created at: {{ post.created_at }}</p>
{% endfor %}
</body>
</html>
七、配置 URL
在 blog 应用中创建一个 urls.py 文件,配置 URL:
from django.urls import path
from .views import post_list
urlpatterns = [
path('', post_list, name='post_list'),
]
在项目的 urls.py 文件中包含 blog 应用的 URL:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
八、运行开发服务器
运行 Django 开发服务器,查看你的博客:
python manage.py runserver