【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/\` 查看博客系统。你可以创建、查看、编辑和删除博客文章。

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

相关推荐
lljss202021 分钟前
Python11中创建虚拟环境、安装 TensorFlow
开发语言·python·tensorflow
空中湖23 分钟前
tensorflow武林志第二卷第九章:玄功九转
人工智能·python·tensorflow
CodeCraft Studio1 小时前
CAD文件处理控件Aspose.CAD教程:使用 Python 将绘图转换为 Photoshop
python·photoshop·cad·aspose·aspose.cad
Python×CATIA工业智造3 小时前
Frida RPC高级应用:动态模拟执行Android so文件实战指南
开发语言·python·pycharm
onceco4 小时前
领域LLM九讲——第5讲 为什么选择OpenManus而不是QwenAgent(附LLM免费api邀请码)
人工智能·python·深度学习·语言模型·自然语言处理·自动化
狐凄4 小时前
Python实例题:基于 Python 的简单聊天机器人
开发语言·python
悦悦子a啊5 小时前
Python之--基本知识
开发语言·前端·python
笑稀了的野生俊7 小时前
在服务器中下载 HuggingFace 模型:终极指南
linux·服务器·python·bash·gpu算力
Naiva7 小时前
【小技巧】Python+PyCharm IDE 配置解释器出错,环境配置不完整或不兼容。(小智AI、MCP、聚合数据、实时新闻查询、NBA赛事查询)
ide·python·pycharm
老虎06277 小时前
JavaWeb(苍穹外卖)--学习笔记04(前端:HTML,CSS,JavaScript)
前端·javascript·css·笔记·学习·html