【django初学者项目】

发布于:2025-03-06 ⋅ 阅读:(14) ⋅ 点赞:(0)

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

 

 步骤 1:环境准备

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

bash

# 创建虚拟环境

python -m venv myblogenv

# 激活虚拟环境

# 在 Windows 上

myblogenv\Scripts\activate

# 在 macOS/Linux 上

source myblogenv/bin/activate

# 安装 Django

pip install django

 

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

bash

# 创建 Django 项目

django-admin startproject myblogproject

# 进入项目目录

cd myblogproject

# 创建应用

python manage.py startapp blogapp

步骤 3:配置项目

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

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

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

python manage.py makemigrations

python manage.py migrate

步骤 6:创建视图

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

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

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

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

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

<!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

<!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

<!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

python manage.py runserver

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

 

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