【Python】 简单的Django项目示例,创建一个博客应用

步骤 1: 安装 Django
首先,我们需要安装Django。打开命令行终端,运行以下命令:

python -m pip install Django

这会使用pip来安装最新版本的Django。

步骤 2: 检查 Django 版本
为了确保Django已成功安装,您可以运行以下命令来检查安装的Django版本:

python -m django --version

这将显示您当前安装的Django版本。

步骤 3: 创建一个 Django 项目
现在,让我们创建一个Django项目。运行以下命令:

django-admin startproject blog_project

这将创建一个名为 “blog_project” 的Django项目文件夹,并在其中包含项目的基本结构。

步骤 4: 进入项目文件夹
切换到项目文件夹 “blog_project”,您可以使用以下命令:

cd blog_project

步骤 5: 创建一个 Django 应用程序
最后,我们将创建一个Django应用程序,命名为 “blog”。运行以下命令:

python manage.py startapp blog

这将在项目中创建一个名为 “blog” 的应用程序,其中包含了与博客相关的文件和目录结构。

步骤 6: 定义模型

blog应用中,定义模型类来表示博客文章和评论。

# blog/models.py

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


class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    pub_date = models.DateTimeField('date published', default=timezone.now)


class Comment(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    text = models.TextField()
    pub_date = models.DateTimeField('date published', default=timezone.now)

步骤 7: 创建视图

blog应用中创建视图函数,以便在浏览器中查看文章和添加评论。

# blog/views.py

from django.shortcuts import render, get_object_or_404
from .models import Post, Comment


def post_list(request):
    posts = Post.objects.all()
    return render(request, 'blog/post_list.html', {'posts': posts})


def add_comment(request, post_id):
    post = Post.objects.get(pk=post_id)
    if request.method == 'POST':
        text = request.POST['comment_text']
        Comment.objects.create(post=post, text=text)
    return render(request, 'blog/post_detail.html', {'post': post})


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

步骤 8: 创建URL映射

blog应用创建urls.py中定义URL路由,将URL请求映射到相应的视图。

# blog/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.post_list, name='post_list'),
    path('add_comment/<int:post_id>/', views.add_comment, name='add_comment'),
]

步骤 9: 创建模板

创建HTML模板文件来渲染文章列表和文章详情页面。

  • templates/blog/post_list.html
{% load static %}
<!DOCTYPE html>
<html>
<head>
    <title>Blog Post List</title>
    <!-- 引入Bootstrap -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css">
    <!-- 引入自定义CSS文件(根据您的项目路径) -->
    <link rel="stylesheet" href="{% static 'css/custom.css' %}">
</head>
<body>
<div class="container">
    <h1 class="display-4 text-primary">Blog Post List</h1>

    {% for post in posts %}
        <div class="card mb-4 bg-info">
            <div class="card-body">
                <h2 class="card-title"><a href="{% url 'post_detail' post.id %}">{{ post.title }}</a></h2>
                <p class="card-text">{{ post.pub_date|date:"F d, Y" }}</p>
                <p class="card-text">{{ post.content }}</p>
                <h3 class="card-title">Comments:</h3>
                <ul class="list-group list-group-flush">
                    {% for comment in post.comment_set.all %}
                        <li class="list-group-item custom-bg-color">
                            <div class="comment-content">{{ comment.text }}</div>
                            <div class="comment-date text-muted">{{ comment.pub_date|date:"F d, Y H:i" }}</div>
                        </li>
                    {% empty %}
                        <li class="list-group-item">No comments yet.</li>
                    {% endfor %}
                </ul>
            </div>
        </div>
    {% empty %}
        <p>No blog posts available.</p>
    {% endfor %}
</div>
</body>
</html>

  • templates/blog/post_detail.html
{% load static %}
<!DOCTYPE html>
<html>
<head>
    <title>{{ post.title }}</title>
    <!-- 引入Bootstrap -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css">
    <!-- 引入自定义CSS文件 -->
    <link rel="stylesheet" href="{% static 'css/custom.css' %}">
</head>
<body>
<div class="container">
    <h1 class="display-4 text-primary">{{ post.title }}</h1>
    <p class="text-muted">{{ post.pub_date|date:"F d, Y" }}</p>
    <p>{{ post.content }}</p>

    <h2 class="text-primary">Comments</h2>
    <ul class="list-group">
        {% for comment in post.comment_set.all %}
            <li class="list-group-item custom-bg-color">
                <div class="comment-content">{{ comment.text }}</div>
                <div class="comment-date text-muted">{{ comment.pub_date|date:"F d, Y H:i" }}</div>
            </li>
        {% empty %}
            <li class="list-group-item">No comments yet.</li>
        {% endfor %}
    </ul>


    <h3 class="text-primary">Add a Comment</h3>
    <form method="post" action="{% url 'add_comment' post.id %}">
        {% csrf_token %}
        <textarea name="comment_text" rows="4" cols="50" class="form-control" required></textarea>
        <br>
        <input type="submit" value="Add Comment" class="btn btn-primary">
    </form>
    <!-- 添加回到首页链接 -->
    <a href="{% url 'post_list' %}" class="btn btn-primary mt-4">Back to Home</a>
</div>
</body>
</html>

步骤 10: 创建静态文件

  • static/css/custom.css
.custom-text-color {
    color: #FF5733; /* 您的自定义文本颜色 */
}

.custom-bg-color {
    display: block;
    background-color: #337AFF; /* 您的自定义背景颜色 */
}
/* 在custom.css中定义样式 */
.comment-content {
    float: left; /* 左对齐 */
}

.comment-date {
    float: right; /* 右对齐 */
}

步骤 11: 修改settings文件

# 添加依赖
import os

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog', # 添加应用
]

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],  # 指定模板文件的目录
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

STATIC_URL = 'static/'
# 配置静态文件存储位置,这是应用级别的static目录
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

步骤 12: 创建数据库表

运行以下命令以创建数据库表:

python manage.py makemigrations --empty blog
python manage.py makemigrations
python manage.py migrate

步骤 13: 创建样例数据

python manage.py shell
from blog.models import Post, Comment
from django.utils import timezone

# 创建一篇博客文章
post1 = Post(title="我的第一篇博客", content="这是我的第一篇博客内容。", pub_date=timezone.now())
post1.save()

# 创建另一篇博客文章
post2 = Post(title="Django 教程", content="学习 Django 是一种乐趣!", pub_date=timezone.now())
post2.save()

# 为第一篇博客文章创建一些评论
comment1 = Comment(post=post1, text="这是第一篇博客的评论。", pub_date=timezone.now())
comment1.save()

comment2 = Comment(post=post1, text="另一个评论示例。", pub_date=timezone.now())
comment2.save()

# 为第二篇博客文章创建一个评论
comment3 = Comment(post=post2, text="感谢分享这个教程!", pub_date=timezone.now())
comment3.save()

# 退出
exit()

步骤 14: 运行项目

python manage.py runserver

运行效果

访问:http://127.0.0.1:8000/blog/

在这里插入图片描述

在这里插入图片描述

代码地址:https://github.com/linjiushengstudy/blog_project

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以给你提供一个简单项目示例,用Python Django框架实现一个简单的留言板应用。 首先,你需要安装 PythonDjango。然后按照以下步骤进行操作: 1. 创建一个 Django 项目 打开终端或命令提示符,进入一个合适的目录,然后运行以下命令: ``` django-admin startproject message_board ``` 这将创建一个名为 message_board 的 Django 项目。 2. 创建一个 Django 应用 进入 message_board 目录,然后运行以下命令: ``` python manage.py startapp message ``` 这将创建一个名为 message 的 Django 应用。 3. 编写视图函数 在 message 应用目录中,打开 views.py 文件,编写以下代码: ```python from django.shortcuts import render from django.http import HttpResponseRedirect from .models import Message def message_list(request): if request.method == 'POST': content = request.POST.get('content') if content: Message.objects.create(content=content) return HttpResponseRedirect('/') messages = Message.objects.all() return render(request, 'message_list.html', {'messages': messages}) ``` 这个函数接收一个 HTTP 请求对象,如果是 POST 请求,就从请求中获取留言内容并将其保存到数据库,然后重定向到留言列表页面;如果是 GET 请求,就从数据库中获取所有留言并渲染留言列表页面。 4. 创建模板 在 message 应用目录中,创建一个名为 templates 的目录,然后在其中创建一个名为 message_list.html 的文件,编写以下代码: ```html <!DOCTYPE html> <html> <head> <title>留言板</title> </head> <body> <form method="post"> {% csrf_token %} <input type="text" name="content"> <button type="submit">提交</button> </form> <ul> {% for message in messages %} <li>{{ message.content }}</li> {% empty %} <li>目前没有留言。</li> {% endfor %} </ul> </body> </html> ``` 这个模板渲染留言列表页面,包括一个表单用于提交新的留言和一个无序列表用于显示已有的留言。 5. 配置 URL 在 message 应用目录中,打开 urls.py 文件,编写以下代码: ```python from django.urls import path from . import views urlpatterns = [ path('', views.message_list, name='message_list'), ] ``` 这个文件定义了 URL 模式,将 URL 路径与视图函数关联起来。 6. 创建数据库模型 在 message 应用目录中,打开 models.py 文件,编写以下代码: ```python from django.db import models class Message(models.Model): content = models.CharField(max_length=255) created_at = models.DateTimeField(auto_now_add=True) ``` 这个文件定义了数据库模型,用于存储留言的内容和创建时间。 7. 运行服务器 在终端或命令提示符中,进入 message_board 目录,然后运行以下命令: ``` python manage.py runserver ``` 这将启动本地服务器,并将应用程序运行在 http://127.0.0.1:8000/ 上。 现在,你可以打开浏览器,访问该网址,使用留言板应用程序留言并查看留言列表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值