返回
Django 初体验:亲自动手,搭建属于你的第一个博客系统
闲谈
2024-02-20 10:11:48
Django是Python界中用来构建网站的知名框架。本指南将带领你从头开始,快速搭建一个初学者的博客。
1. 准备工作
- 安装 Python
- 安装 Django
2. 创建项目
- 创建项目目录
mkdir django-blog
cd django-blog
- 创建项目文件
django-admin startproject myblog
3. 设置中文及时区
- 打开根目录的
settings.py
文件 - 修改以下两行配置
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
4. 创建 App
- 创建 App
cd myblog
python manage.py startapp blog
- 修改
settings.py
文件,加入App
INSTALLED_APPS = [
'blog', # 新增的 App
]
5. 创建模型
- 在
blog
App 目录下创建models.py
文件
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
6. 创建迁移文件并执行迁移
python manage.py makemigrations
python manage.py migrate
7. 创建视图函数
- 在
blog
App 目录下创建views.py
文件
from django.shortcuts import render
from .models import Post
def blog_list(request):
posts = Post.objects.all()
context = {'posts': posts}
return render(request, 'blog/blog_list.html', context)
def blog_detail(request, post_id):
post = Post.objects.get(pk=post_id)
context = {'post': post}
return render(request, 'blog/blog_detail.html', context)
8. 创建 URL 配置文件
- 在
blog
App 目录下创建urls.py
文件
from django.urls import path
from . import views
urlpatterns = [
path('blog/', views.blog_list, name='blog_list'),
path('blog/<int:post_id>/', views.blog_detail, name='blog_detail'),
]
9. 创建模板文件
-
在
blog
App 目录下创建templates
目录,并在其中创建blog_list.html
和blog_detail.html
文件 -
blog_list.html
{% extends 'base.html' %}
{% block content %}
<h1>博文列表</h1>
{% for post in posts %}
<div class="post">
<h2><a href="{% url 'blog_detail' post.id %}">{{ post.title }}</a></h2>
<p>{{ post.body|truncatewords:30 }}</p>
</div>
{% endfor %}
{% endblock %}
blog_detail.html
{% extends 'base.html' %}
{% block content %}
<h1>博文详情</h1>
<p>{{ post.title }}</p>
<p>{{ post.body }}</p>
{% endblock %}
10. 运行服务器
python manage.py runserver
你的博客系统已经搭建完成,现在你可以访问 http://127.0.0.1:8000/blog/
来查看你的博客了。
结语
以上就是如何使用 Django 创建一个博客系统的详细步骤,希望对你有所帮助。如果你有任何疑问,欢迎在评论区留言。