【django初学者项目】

下面为你详细介绍如何创建一个简单有趣的 Django 项目------博客系统。这个项目允许用户创建、查看、编辑和删除博客文章。

步骤 1:环境准备

首先,确保你已经安装了 Python 和 pip。然后,创建一个虚拟环境并激活它,接着安装 Django。

bash

创建虚拟环境

bash 复制代码
python -m venv myblogenv

激活虚拟环境

在 Windows 上

bash 复制代码
myblogenv\Scripts\activate

在 macOS/Linux 上

bash 复制代码
source myblogenv/bin/activate

安装 Django

bash 复制代码
pip install django

步骤 2:创建 Django 项目和应用

bash

创建 Django 项目

bash 复制代码
django-admin startproject myblogproject

进入项目目录

bash 复制代码
cd myblogproject

创建应用

bash 复制代码
python manage.py startapp blogapp

步骤 3:配置项目

打开 `myblogproject/settings.py` 文件,将 `blogapp` 添加到 `INSTALLED_APPS` 列表中:

python

python 复制代码
INSTALLED_APPS = [

    'django.contrib.admin',

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

    'django.contrib.staticfiles',

    'blogapp',  # 添加这一行

]

步骤 4:定义模型

打开 `blogapp/models.py` 文件,定义博客文章的模型:

python

python 复制代码
from django.db import models



class BlogPost(models.Model):

    title = models.CharField(max_length=200)

    content = models.TextField()

    pub_date = models.DateTimeField(auto_now_add=True)



    def __str__(self):

        return self.title

步骤 5:创建数据库迁移文件并应用迁移

bash

bash 复制代码
python manage.py makemigrations

python manage.py migrate

步骤 6:创建视图

打开 `blogapp/views.py` 文件,编写视图函数:

python

python 复制代码
from django.shortcuts import render, redirect, get_object_or_404

from .models import BlogPost

from .forms import BlogPostForm



def post_list(request):

    posts = BlogPost.objects.all().order_by('-pub_date')

    return render(request, 'blogapp/post_list.html', {'posts': posts})



def post_detail(request, pk):

    post = get_object_or_404(BlogPost, pk=pk)

    return render(request, 'blogapp/post_detail.html', {'post': post})



def post_create(request):

    if request.method == 'POST':

        form = BlogPostForm(request.POST)

        if form.is_valid():

            form.save()

            return redirect('post_list')

    else:

        form = BlogPostForm()

    return render(request, 'blogapp/post_form.html', {'form': form})



def post_edit(request, pk):

    post = get_object_or_404(BlogPost, pk=pk)

    if request.method == 'POST':

        form = BlogPostForm(request.POST, instance=post)

        if form.is_valid():

            form.save()

            return redirect('post_detail', pk=post.pk)

    else:

        form = BlogPostForm(instance=post)

    return render(request, 'blogapp/post_form.html', {'form': form})



def post_delete(request, pk):

    post = get_object_or_404(BlogPost, pk=pk)

    post.delete()

    return redirect('post_list')

步骤 7:创建表单

在 `blogapp` 目录下创建 `forms.py` 文件:

python

python 复制代码
from django import forms

from .models import BlogPost



class BlogPostForm(forms.ModelForm):

    class Meta:

        model = BlogPost

        fields = ['title', 'content']

步骤 8:配置 URL

打开 `blogapp/urls.py` 文件(如果不存在则创建):

Python

python 复制代码
from django.urls import path

from .views import post_list, post_detail, post_create, post_edit, post_delete



urlpatterns = [

    path('', post_list, name='post_list'),

    path('<int:pk>/', post_detail, name='post_detail'),

    path('new/', post_create, name='post_create'),

    path('<int:pk>/edit/', post_edit, name='post_edit'),

    path('<int:pk>/delete/', post_delete, name='post_delete'),

]

然后在 `myblogproject/urls.py` 中包含 `blogapp` 的 URL 配置:

python

python 复制代码
from django.contrib import admin

from django.urls import path, include



urlpatterns = [

    path('admin/', admin.site.urls),

    path('', include('blogapp.urls')),

]

步骤 9:创建模板

在 `blogapp` 目录下创建 `templates` 目录,再在 `templates` 目录下创建 `blogpost.pk。在 `blogapp/templates/blogapp` 目录下创建以下模板文件:

`post_list.html`

html

html 复制代码
<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Blog Posts</title>

</head>

<body>

    <h1>Blog Posts</h1>

    <!-- 假设视图名为 post_create,正确创建新文章链接 -->

    <a href="{% url 'post_create' %}">New Post</a>

    <!-- 假设 posts 是包含博客文章的列表 -->

    {% for post in posts %}

        <h2><a href="{% url 'post_detail' post.pk %}">{{ post.title }}</a></h2>

        <p>{{ post.content|post.pkpost.pkewords:20 }}</p>

        <p>Published on {{ post.pub_date }}</p>

        <a href="{% url 'post_edit' post.pk %}">Edit</a>

        <a href="{% url 'post_delete' post.pk %}">Delete</a>

    {% endfor %}

</body>

</html>

`post_detail.html`

html

html 复制代码
<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>{{ post.title }}</title>

</head>

<body>

    <h1>{{ post.title }}</h1>

    <p>{{ post.content }}</p>

    <p>Published on {{ post.pub_date }}</p>

    <a href="{% url 'post_edit' post.pk %}">Edit</a>

    <a href="{% url 'post_delete' post.pk %}">Delete</a>

    <a href="{% url 'post_list' %}">Back to List</a>

</body>

</html>

`post_form.html`

html

html 复制代码
<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>{% if form.instance.pk %}Edit Post{% else %}New Post{% endif %}</title>

</head>

<body>

    <h1>{% if form.instance.pk %}Edit Post{% else %}New Post{% endif %}</h1>

    <form method="post">

        {% csrf_token %}

        {{ form.as_p }}

        <button type="submit">Save</button>

    </form>

    <a href="{% url 'post_list' %}">Cancel</a>

</body>

</html>

步骤 10:运行项目

bash

bash 复制代码
python manage.py runserver

现在,你可以在浏览器中访问 `http://127.0.0.1:8000/\` 查看博客系统。你可以创建、查看、编辑和删除博客文章。

有不会的问题尽可来私信询问噢~

相关推荐
风逸hhh1 小时前
python打卡day46@浙大疏锦行
开发语言·python
火兮明兮1 小时前
Python训练第四十三天
开发语言·python
互联网杂货铺2 小时前
完美搭建appium自动化环境
自动化测试·软件测试·python·测试工具·职场和发展·appium·测试用例
Gyoku Mint3 小时前
机器学习×第二卷:概念下篇——她不再只是模仿,而是开始决定怎么靠近你
人工智能·python·算法·机器学习·pandas·ai编程·matplotlib
莱茵菜苗3 小时前
Python打卡训练营day46——2025.06.06
开发语言·python
爱学习的小道长3 小时前
Python 构建法律DeepSeek RAG
开发语言·python
鱼馅饼3 小时前
vscode使用系列之快速生成html模板
ide·vscode·html
luojiaao3 小时前
【Python工具开发】k3q_arxml 简单但是非常好用的arxml编辑器,可以称为arxml杀手包
开发语言·python·编辑器
英英_4 小时前
视频爬虫的Python库
开发语言·python·音视频
猛犸MAMMOTH4 小时前
Python打卡第46天
开发语言·python·机器学习