Python使用Django实现博客系统完整版

下面是关于“Python使用Django实现博客系统完整版”的完整攻略及两条示例说明。

I. Django框架简介

Django是一个Python的开源Web框架,采用了MVT(Model-View-Template)的设计模式,从而使得Web应用的开发更为高效和稳定。通过Django,我们可以快速地构建Web应用,并且Django提供了良好的数据库操作支持,同时还可以轻松地实现前后端的分离,从而使得Web应用的开发更加简便快捷。

II. Django应用创建与配置

为了创建一个基于Django的博客系统,我们需要首先创建一个Django应用,并完成对应的配置。具体步骤如下:

1. 安装Django框架

可以通过在命令行中输入以下命令来安装Django框架:

pip install django

2. 创建Django应用

运行以下命令来创建一个基于Django的应用:

django-admin startproject myblog

其中,myblog是应用的名字,可以根据需求自行修改。

3. 创建Django App

运行以下命令来创建Django App:

cd myblog
python manage.py startapp [appname]

例如,创建名为blog的Django App:

cd myblog
python manage.py startapp blog

4. 配置Django App

myblog/settings.py文件中添加应用blog的配置:

INSTALLED_APPS = [
    'blog',
    ......
]

接着,在myblog/urls.py文件中添加应用blog的路由配置:

from django.urls import path, include

urlpatterns = [
    path('blog/', include('blog.urls')),
    ......
]

III. Django模型设计与数据库操作

博客系统中需要设计文章模型,并完成对应的数据库操作。具体步骤如下:

1. 设计文章模型

blog/models.py文件中设计文章模型:

from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=255)
    author = models.CharField(max_length=64)
    content = models.TextField()
    created_time = models.DateTimeField(auto_now_add=True)
    last_updated_time = models.DateTimeField(auto_now=True)

2. 数据库迁移

运行以下命令来迁移数据库:

python manage.py makemigrations blog
python manage.py migrate

3. 数据库操作

通过Django的ORM(Object-Relational Mapping)可以实现对数据库的操作。例如,插入一条文章记录的操作如下:

from blog.models import Article

article = Article(title='title', author='author', content='content')
article.save()

IV. Django视图设计与API开发

博客系统中需要设计视图以及API接口,并完成对应的开发。具体步骤如下:

1. 视图设计

blog/views.py文件中设计视图:

from django.shortcuts import render
from blog.models import Article

def index(request):
    articles = Article.objects.all()
    return render(request, 'index.html', {'articles': articles})

2. API接口设计

blog/views.py文件中设计API接口:

from django.http import JsonResponse
from blog.models import Article

def articles(request):
    articles = Article.objects.all()
    data = [
        {'title': article.title, 'author': article.author, 'content': article.content}
        for article in articles
    ]
    return JsonResponse({'data': data})

3. URL配置

blog/urls.py文件中对应的URL配置:

from django.urls import path
from blog import views

urlpatterns = [
    path('', views.index, name='index'),
    path('api/articles', views.articles, name='api_articles'),
]

V. 博客系统前端实现

博客系统需要通过前端实现,具体步骤如下:

1. 模板设计

blog/templates目录下设计视图对应的模板文件,例如index.html

{% for article in articles %}
<div class="article">
    <h2>{{ article.title }}</h2>
    <p>{{ article.author }}</p>
    <p>{{ article.created_time }}</p>
    <p>{{ article.content }}</p>
</div>
{% endfor %}

2. API调用

通过JavaScript代码调用API接口,例如:

fetch('/api/articles')
  .then(response => response.json())
  .then(data => {
    console.log(data)
  })

VI. 示例说明 - 一个简单的博客系统

下面是通过Django框架实现的一个简单的博客系统的示例,包含后端和前端实现。具体步骤如下:

后端实现

1. 创建Django应用

运行以下命令来创建一个名为blog的Django应用:

django-admin startproject myblog
cd myblog
python manage.py startapp blog

2. 安装依赖

新建一个名为requirements.txt的文件,添加以下内容:

Django==3.1.7
django-cors-headers==3.7.0
mysqlclient==2.0.3
pytz==2021.1

运行以下命令来安装依赖:

pip install -r requirements.txt

3. 设计文章模型

blog/models.py文件中设计文章模型:

from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=255)
    author = models.CharField(max_length=64)
    content = models.TextField()
    created_time = models.DateTimeField(auto_now_add=True)
    last_updated_time = models.DateTimeField(auto_now=True)

4. 数据库迁移

运行以下命令来迁移数据库:

python manage.py makemigrations blog
python manage.py migrate

5. 视图设计

blog/views.py文件中设计视图:

from django.shortcuts import render
from blog.models import Article

def index(request):
    articles = Article.objects.all()
    return render(request, 'index.html', {'articles': articles})

6. API接口设计

blog/views.py文件中设计API接口:

from django.http import JsonResponse
from blog.models import Article

def articles(request):
    articles = Article.objects.all()
    data = [
        {'title': article.title, 'author': article.author, 'content': article.content}
        for article in articles
    ]
    return JsonResponse({'data': data})

7. URL配置

blog/urls.py文件中对应的URL配置:

from django.urls import path
from blog import views

urlpatterns = [
    path('', views.index, name='index'),
    path('api/articles', views.articles, name='api_articles'),
]

8. 配置CORS

myblog/settings.py文件中添加以下配置:

INSTALLED_APPS = [
    ...
    'corsheaders',
]

MIDDLEWARE = [
    ...
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
]

CORS_ORIGIN_ALLOW_ALL = True

9. 运行Django服务器

运行以下命令来启动Django服务器:

python manage.py runserver

前端实现

我们使用Vue.js作为前端开发框架,下面是具体的实现步骤:

1. 安装Vue.js

可以通过以下命令来安装Vue.js:

npm install vue

2. 设计页面模板

新建一个名为index.html的文件,添加以下内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>My Blog</title>
</head>
<body>
    <div id="app">
        <h1>My Blog</h1>
        <div v-for="(article, index) in articles" :key="index" class="article">
            <h2>{{ article.title }}</h2>
            <p>{{ article.author }}</p>
            <p>{{ article.created_time }}</p>
            <p>{{ article.content }}</p>
        </div>
    </div>

    <script src="https://unpkg.com/vue@next"></script>
    <script>
        const app = Vue.createApp({
            data() {
                return {
                    articles: []
                }
            },
            async mounted() {
                const response = await fetch('/api/articles')
                const data = await response.json()
                this.articles = data.data
            }
        })
        app.mount('#app')
    </script>
</body>
</html>

3. 运行前端服务器

运行以下命令来启动前端服务器:

python -m http.server

4. 查看结果

在浏览器中访问http://localhost:8000,即可看到博客系统的展示结果。

VII. 示例说明 - 博客系统添加登录验证

下面是在基于Django实现的博客系统中添加登录验证的示例,具体步骤如下:

1. 运行以下命令来创建一个名为users的Django应用:

python manage.py startapp users

2. 在users/models.py文件中设计用户模型:

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    pass

3. 迁移数据库:

python manage.py makemigrations users
python manage.py migrate

4. 在myblog/settings.py文件中添加以下配置:

INSTALLED_APPS = [
    ...
    'users',
]

AUTH_USER_MODEL = 'users.User'

5. 在users/views.py文件中设计登录API:

from django.contrib.auth.views import LoginView

class MyLoginView(LoginView):
    template_name = 'login.html'

6. 在users/urls.py文件中设计登录路由:

from django.urls import path
from . import views

urlpatterns = [
    path('login/', views.MyLoginView.as_view(), name='login'),
]

7. 创建login.html模板文件:

{% extends 'base.html' %}

{% block content %}
<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Login</button>
</form>
{% endblock %}

8. 在myblog/urls.py文件中添加如下配置:

from django.urls import path, include

urlpatterns = [
    ...
    path('users/', include('django.contrib.auth.urls')),
]

9. 修改blog/views.py文件中的函数index

from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from blog.models import Article

@login_required
def index(request):
    articles = Article.objects.all()
    return render(request, 'index.html', {'articles': articles})

10. 在blog/templates/base.html模板文件中添加登录和登出链接:

{% if user.is_authenticated %}
    <a href="{% url 'logout' %}">Logout</a>
{% else %}
    <a href="{% url 'login' %}">Login</a>
{% endif %}

11. 运行Django服务器并查看结果:

python manage.py runserver

在浏览器中访问http://localhost:8000,即可看到博客系统的展示结果,并且需要登录才能查看文章。

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

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

相关文章

  • django向数据库添加数据

    url.py        views.py    host.html (样式)  (展示部分)   (添加信息界面) (js部分)     展示添加数据:    

    Django 2023年4月12日
    00
  • Django–session(登录用)

    一、session的原理图 二、Django中session对象的设置/读取/删除及其他方法 三. Django–配置 settings.py中与session有关的参数   一、session的原理图 session是保存在服务器的key-value。用session_id标识这个key-value对象,把session_id设置为cookie返给浏览器…

    Django 2023年4月12日
    00
  • django 模型字段设置默认值代码

    当我们在使用 Django 框架时,经常需要定义数据库模型,而模型中的字段往往需要提供默认值,以在创建新对象时提供默认初始化值。 下面是设置模型字段默认值的完整攻略: 1. 使用默认值作为固定值 如果要将模型字段的默认值设置为一个固定值,可以在字段定义中指定 default 属性,并将其设置为相应的值。 例如,我们想定义一个名为 Person 的模型,其具有…

    Django 2023年5月15日
    00
  • Django实现分页功能

    Django是一个基于MVT模式的Web框架,提供了方便的分页功能,可以进行快速的实现。在实践中,分页功能也是Web应用中必不可少的一部分。 本文将详解Django实现分页功能的完整攻略,过程中提供代码示例。 首先,需要安装Django框架,可以使用pip进行安装。 pip install django 在视图函数中,需要对数据进行分页处理。假设有一个数据模…

    Django 2023年3月13日
    00
  • Django聚合查询和分组查询

    聚合查询 聚合查询是对查询结果集进行某种特定的操作或者计算出某个值,例如对结果集求和、平均值、最大值、最小值等操作。在 Django 中,聚合查询的方法是使用 aggregate() 函数。 (1) 获得所有人的平均年龄 from django.db.models import Avg from yourapp.models import Person re…

    Django 2023年3月12日
    00
  • django—查询操作

    1)queryset对象:  表示的是一个列表里面有多个类对象的集合,,  all()方法和filter()方法,查找出来的都是queryset方法   2)model对象:只有一个对象 get()方法查找出来的就是以个model对象,里面有多个属性(name,age等) get()方法如果没有结果就会报错,而filter只会返回一个空[].   3)exc…

    Django 2023年4月12日
    00
  • 让Django支持Sql Server作后端数据库的方法

    将Django配置为使用Sql Server作为后端数据库的方法主要有以下几个步骤: 安装Microsoft ODBC Driver for Sql Server。该驱动程序是Sql Server与Django之间的桥梁,用于将Django的SQL语句转换为Sql Server可以理解的格式。你可以在Microsoft的官网下载安装包(http://www.…

    Django 2023年5月16日
    00
  • Python Django的安装配置教程图文详解

    下面我将对“Python Django的安装配置教程图文详解”的完整攻略进行详细讲解,包括两条示例说明。 Python Django安装配置教程图文详解 安装Python 首先需要安装Python。前往Python官网下载最新版Python安装包,下载地址为:https://www.python.org/downloads。 下载对应平台的Python安装包…

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