【django初学者项目】
下面为你详细介绍如何创建一个简单有趣的 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/` 查看博客系统。你可以创建、查看、编辑和删除博客文章。
有不会的问题尽可来私信询问噢~
