利用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(六)模型(model)系统 — 常用查询语法及进阶

    必知必会13条 <1> all(): 查询所有结果 <2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <3> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。 <4> exclude(**kwa…

    Django 2023年4月11日
    00
  • 使用Django2.0打造小程序助手

    打造个人助手 主角: Django2.0 微信小程序(2017年元旦发布) 技术要求: python3开发基础 Django开发基础 HTML+CSS+JS 开发环境: Python开发环境:Python3.5+pycharm 小程序开发环境:微信开发者工具 系统开发环境:Windows(开发)+linux(部署) 依赖环境&工具 Postman(模…

    Django 2023年4月9日
    00
  • django中render()与render_to_response()区别

    render()与render_to_response()均是django中用来显示模板页面的,但是在django1.3之后,render()便比render_to_response()更加招人待见!最明显的就是前者会自动使用RequestContext,而后者需要coding进去,例如: render(request,’share.html’, {‘reg…

    Django 2023年4月11日
    00
  • django form关于clean及cleaned_data的说明 以及4种初始化

      1.form类的运行顺序是init,clean,validte,save其中clean和validate会在form.is_valid()方法中被先后调用。(这里留有一个疑问,结构完全相同的两个form,但是一个为先验证后clean,另一个先clean后验证。原因不明。)这里https://docs.djangoproject.com/en/dev/re…

    Django 2023年4月9日
    00
  • 详解Django ORM模块使用方法

    Django ORM模块是什么 Django ORM是Django框架的核心模块之一,它是ORM(Object-Relational Mapping)技术的实现。 所谓ORM,是将关系型数据库中的表映射为Python代码中的类,使得开发者可以通过操作Python对象的方式来操作数据库。Django ORM可以让开发者轻松地进行数据库操作,不需要编写复杂的SQ…

    2023年3月11日
    00
  • python django 配置文件和url参数配置

    配置文件 配置视图查找的路径 静态资源的映射路径 示例如下     第一个参数正则表达式 路由匹配用正则需要引入re_path,以下规则为0-9的4位数字   第一个参数正则表达式分组名 在Python正则表达式中,命名正则表达式组的语法是(?P<name>pattern),组name的名称,并且 pattern是要匹配的模式 year为匹配到的…

    Django 2023年4月16日
    00
  • Vue + Django实现分页实例讲解

    Vue + Django + BootstrapVue实现分页,前端后台实例讲解     1、后台Django代码      def storage(req): ”’ 存储图片接口: 1、根据roomid查询出数据 ”’ # 从数据库选出所需数据 roomid = req[‘roomid’] data_list = Memory.objects.filt…

    Django 2023年4月12日
    00
  • django使用多个数据库的方法实例

    下面我将为您详细讲解“django使用多个数据库的方法实例”,包含两个示例。 一、Django使用多个数据库的方法 在Django中,如果我们需要使用多个数据库,则可以在settings.py文件中进行设置。首先,默认数据库的设置格式如下: DATABASES = { ‘default’: { ‘ENGINE’: ‘django.db.backends.sq…

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