利用Python Django实现简单博客系统

请看以下详细讲解“利用Python Django实现简单博客系统”的完整攻略。

1. 确定博客系统的基本功能

在设计博客系统之前,首先需要明确博客系统的基本功能,例如:

  • 用户可以通过博客网站查看已发布文章;
  • 网站后台管理员可以登录后台管理系统发布新的博客文章;
  • 网站后台管理员可以对已发布的文章进行编辑和删除;
  • 网站前台访客可以通过搜索框搜索博客文章。

2. 安装Django框架及相关依赖

其次,需要确保已安装Django框架及相关依赖,例如:

pip install django
pip install django-crispy-forms

3. 编写Django项目

接下来,开始编写Django项目。首先进入到项目所在目录,执行以下命令创建Django项目:

django-admin startproject blog

这将会在当前目录下创建一个名为blog的Django项目,其中包括一个名为blog的主应用。接着,我们可以通过以下命令进入到blog项目目录:

cd blog

在blog目录下,可以通过以下命令创建名为articles的子应用:

python manage.py startapp articles

这将会在当前目录下创建一个名为articles的子应用,并在INSTALLED_APPS中添加该应用。

4. 设计数据模型

在进行数据模型设计之前,需要在blog/setting.py中进行数据库相关配置。我们可以选择使用SQLite3数据库,只需在数据库选项中添加以下配置即可:

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

接着,在articles/models.py文件中定义博客文章的数据模型:

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

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    pub_date = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.title

在这里,我们定义了一个Article类,包含title、content、pub_date属性,分别表示文章的标题、内容、发表日期。同时,在数据模型中定义了__str__()方法,用于在控制台中输出文章标题。

5. 配置URL路由

接下来,需要配置URL路由。在articles文件夹中创建urls.py文件,添加以下代码:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.article_list, name='article_list'),
    path('article/<int:pk>/', views.article_detail, name='article_detail'),
]

其中,''表示网站主页的URL,'article//'表示文章详情页的URL。我们可以通过views.article_list配置网站主页的访问方式,通过views.article_detail配置文章详情页的访问方式。

6. 编写视图函数

在Django中,视图函数是用于处理网页请求的Python函数。在articles/views.py文件中定义以下视图函数:

from django.shortcuts import render, get_object_or_404
from .models import Article

def article_list(request):
    articles = Article.objects.all().order_by('-pub_date')
    return render(request, 'articles/article_list.html', {'articles': articles})

def article_detail(request, pk):
    article = get_object_or_404(Article, pk=pk)
    return render(request, 'articles/article_detail.html', {'article': article})

在这里,我们定义了article_list和article_detail两个视图函数,分别用于处理网站主页和文章详情页的请求。同时,我们使用了render函数来渲染模板,并把articles和article数据传递到模板中。

7. 编写模板文件

在templates/articles文件夹中创建article_list.html和article_detail.html两个模板文件。在article_list.html文件中添加以下代码:

{% extends 'base.html' %}

{% block content %}
    {% for article in articles %}
        <article class="media content-section">
            <div class="media-body">
                <h2><a class="article-title" href="{% url 'article_detail' pk=article.pk %}">{{ article.title }}</a></h2>
                <p class="article-content">
                    {{ article.content | truncatechars:200 }}
                </p>
                <small class="article-pub-date"><em>Published {{ article.pub_date }}</em></small>
            </div>
        </article>
    {% endfor %}
{% endblock content %}

在article_detail.html文件中添加以下代码:

{% extends 'base.html' %}

{% block content %}
    <article class="media content-section">
        <div class="media-body">
            <h2 class="article-title">{{ article.title }}</h2>
            <small class="article-pub-date"><em>Published {{ article.pub_date }}</em></small>
            <p class="article-content">{{ article.content }}</p>
        </div>
    </article>
{% endblock content %}

在这里,使用了Django模板语言来渲染文章列表和文章详情页的页面。

8. 创建超级用户

在完成以上步骤后,我们需要创建超级用户以便登录后台管理系统。在当前项目下执行以下命令:

python manage.py createsuperuser

按照提示,输入用户名、邮箱和密码,即可创建超级用户。接着,在浏览器中访问'http://127.0.0.1:8000/admin/',通过输入用户名和密码登录后台管理系统。

9. 完成后台管理系统

在创建超级用户之后,我们需要在articles/admin.py文件中注册Article模型,以便在后台管理系统中管理文章。

from django.contrib import admin
from .models import Article

admin.site.register(Article)

接着,在浏览器中访问'http://127.0.0.1:8000/admin/articles/article/',即可查看已发布的文章。在该页面中,我们可以对已发布文章进行编辑和删除。

示例1:发布新文章

登录到后台管理系统后,我们可以通过点击“Add Article”按钮来发布新文章,输入新文章的标题和内容后保存即可。接着,在网站主页中可以看到该新文章的摘要和发表日期。

示例2:搜索博客文章

我们可以通过在网站主页中的搜索框输入关键词来搜索博客文章。在article_list视图函数中,可以对搜索结果进行筛选:

def article_list(request):
    query = request.GET.get('q')
    if query:
        articles = Article.objects.filter(title__icontains=query).order_by('-pub_date')
    else:
        articles = Article.objects.all().order_by('-pub_date')
    return render(request, 'articles/article_list.html', {'articles': articles})

在这里,我们使用filter()函数对文章标题进行模糊匹配,在没有匹配结果时返回所有文章。接着,在网站主页输入关键词即可搜索博客文章。

至此,利用Python Django实现简单博客系统的攻略完整完成。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用Python Django实现简单博客系统 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Django笔记五之字段类型

    这篇笔记介绍字段的类型 Field Type。 Django 的model 下的 field 对应的是 MySQL 中的表字段,而我们定义的 field 的类型则对应 MySQL 中的字段类型。 本次主要介绍以下几种: CharField IntegerField DateField/DateTimeField BooleanField FloatField…

    2023年4月10日
    00
  • django的聚合函数和aggregate、annotate方法使用详解

    标题:Django的聚合函数和aggregate、annotate方法使用详解 在Django的ORM中,聚合函数和aggregate、annotate方法是用来对查询的结果进行统计和分析的常用方法。下面详细介绍聚合函数和这两个方法的使用方法,并提供两个示例说明。 一、聚合函数 聚合函数是用来对查询结果进行统计分析的函数。常用的聚合函数有:Count(), …

    Django 2023年5月16日
    00
  • python笔记-20 django进阶 (model与form、modelform对比,三种ajax方式的对比,随机验证码,kindeditor)

    1、model的功能 1.1 创建数据库表 1.2 操作数据库表 1.3 数据库的增删改查操作 2、创建数据库表的单表操作 2.1 定义表对象 class xxx(models.MODEL) 2.2 定义字段   CharField EmailField TextField IntegerField AutoField BooleanField DateFi…

    Django 2023年4月13日
    00
  • django 多数据库配置教程

    下面是关于“django 多数据库配置教程”的详细攻略。 第一步: 安装数据库驱动 在本教程中,我们使用MySQL和SQLite两个数据库来进行示例。因此,我们需要分别安装两个数据库驱动程序。 安装MySQL驱动: pip install mysqlclient 注意:如果在Windows系统上安装mysqlclient失败,请使用以下命令: pip ins…

    Django 2023年5月16日
    00
  • python Django问题:TemplateDoesNotExist at /index/

       原因:发现Django1.8,设置要加载模板的路径时,不是直接自己定义一个TEMPLATE_DIR,然后给它赋值 解决:settings.py配置文件中添加红框代码   BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) ‘DIRS’: [os.path.join…

    Django 2023年4月11日
    00
  • django HttpResponse的用法

    一、传json字典 def back_json(rquest): #JsonResponse父类是HttpResponse,原码里调用了json.dumps() from django.http import JsonResponse back_msg = {‘name’:name,’age’:123} return JsonResponse(back_ms…

    Django 2023年4月12日
    00
  • Django框架之给客户端返回数据

    在Django框架中,我们可以通过视图函数返回响应对象来给客户端返回指定的数据。 接下来我将给大家简述一下如何利用响应对象给客户端返回指定数据。 1. 自定义响应对象 第一种方式: from django.http import HttpResponse, JsonResponse# 自定义响应对象 def index(request): # 第一种方式构建…

    Django 2023年4月12日
    00
  • 1.初识 Django

    设计模式 定义 # mysite/news/models.py from django.db import models class Reporter(models.Model): full_name = models.CharField(max_length=70) def __str__(self): return self.full_name clas…

    Django 2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部