【django初学者项目】

打印 上一主题 下一主题

主题 1878|帖子 1878|积分 5634

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
下面为你具体先容如何创建一个简单有趣的 Django 项目——博客系统。这个项目允许用户创建、查看、编辑和删除博客文章。
 
 步调 1:环境准备
首先,确保你已经安装了 Python 和 pip。然后,创建一个虚拟环境并激活它,接着安装 Django。
bash
# 创建虚拟环境
  1. python -m venv myblogenv
复制代码
# 激活虚拟环境
# 在 Windows 上
  1. myblogenv\Scripts\activate
复制代码
# 在 macOS/Linux 上
  1. source myblogenv/bin/activate
复制代码
# 安装 Django
  1. pip install django
复制代码
 
步调 2:创建 Django 项目和应用
bash
# 创建 Django 项目
  1. django-admin startproject myblogproject
复制代码
# 进入项目目录
  1. cd myblogproject
复制代码
# 创建应用
  1. python manage.py startapp blogapp
复制代码
步调 3:设置项目
打开 `myblogproject/settings.py` 文件,将 `blogapp` 添加到 `INSTALLED_APPS` 列表中:
python
  1. INSTALLED_APPS = [
  2.     'django.contrib.admin',
  3.     'django.contrib.auth',
  4.     'django.contrib.contenttypes',
  5.     'django.contrib.sessions',
  6.     'django.contrib.messages',
  7.     'django.contrib.staticfiles',
  8.     'blogapp',  # 添加这一行
  9. ]
复制代码
步调 4:定义模型
打开 `blogapp/models.py` 文件,定义博客文章的模型:
python
  1. from django.db import models
  2. class BlogPost(models.Model):
  3.     title = models.CharField(max_length=200)
  4.     content = models.TextField()
  5.     pub_date = models.DateTimeField(auto_now_add=True)
  6.     def __str__(self):
  7.         return self.title
复制代码
步调 5:创建数据库迁移文件并应用迁移
bash
  1. python manage.py makemigrations
  2. python manage.py migrate
复制代码
步调 6:创建视图
打开 `blogapp/views.py` 文件,编写视图函数:
python
  1. from django.shortcuts import render, redirect, get_object_or_404
  2. from .models import BlogPost
  3. from .forms import BlogPostForm
  4. def post_list(request):
  5.     posts = BlogPost.objects.all().order_by('-pub_date')
  6.     return render(request, 'blogapp/post_list.html', {'posts': posts})
  7. def post_detail(request, pk):
  8.     post = get_object_or_404(BlogPost, pk=pk)
  9.     return render(request, 'blogapp/post_detail.html', {'post': post})
  10. def post_create(request):
  11.     if request.method == 'POST':
  12.         form = BlogPostForm(request.POST)
  13.         if form.is_valid():
  14.             form.save()
  15.             return redirect('post_list')
  16.     else:
  17.         form = BlogPostForm()
  18.     return render(request, 'blogapp/post_form.html', {'form': form})
  19. def post_edit(request, pk):
  20.     post = get_object_or_404(BlogPost, pk=pk)
  21.     if request.method == 'POST':
  22.         form = BlogPostForm(request.POST, instance=post)
  23.         if form.is_valid():
  24.             form.save()
  25.             return redirect('post_detail', pk=post.pk)
  26.     else:
  27.         form = BlogPostForm(instance=post)
  28.     return render(request, 'blogapp/post_form.html', {'form': form})
  29. def post_delete(request, pk):
  30.     post = get_object_or_404(BlogPost, pk=pk)
  31.     post.delete()
  32.     return redirect('post_list')
复制代码
步调 7:创建表单
在 `blogapp` 目录下创建 `forms.py` 文件:
python
  1. from django import forms
  2. from .models import BlogPost
  3. class BlogPostForm(forms.ModelForm):
  4.     class Meta:
  5.         model = BlogPost
  6.         fields = ['title', 'content']
复制代码
步调 8:设置 URL
打开 `blogapp/urls.py` 文件(假如不存在则创建):
Python
  1. from django.urls import path
  2. from .views import post_list, post_detail, post_create, post_edit, post_delete
  3. urlpatterns = [
  4.     path('', post_list, name='post_list'),
  5.     path('<int:pk>/', post_detail, name='post_detail'),
  6.     path('new/', post_create, name='post_create'),
  7.     path('<int:pk>/edit/', post_edit, name='post_edit'),
  8.     path('<int:pk>/delete/', post_delete, name='post_delete'),
  9. ]
复制代码
然后在 `myblogproject/urls.py` 中包含 `blogapp` 的 URL 设置:
python
  1. from django.contrib import admin
  2. from django.urls import path, include
  3. urlpatterns = [
  4.     path('admin/', admin.site.urls),
  5.     path('', include('blogapp.urls')),
  6. ]
复制代码
 步调 9:创建模板
在 `blogapp` 目录下创建 `templates` 目录,再在 `templates` 目录下创建 `blogpost.pk。在 `blogapp/templates/blogapp` 目录下创建以下模板文件:
#### `post_list.html`
html
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>Blog Posts</title>
  6. </head>
  7. <body>
  8.     <h1>Blog Posts</h1>
  9.     <!-- 假设视图名为 post_create,正确创建新文章链接 -->
  10.     <a href="{% url 'post_create' %}">New Post</a>
  11.     <!-- 假设 posts 是包含博客文章的列表 -->
  12.     {% for post in posts %}
  13.         <h2><a href="{% url 'post_detail' post.pk %}">{{ post.title }}</a></h2>
  14.         <p>{{ post.content|post.pkpost.pkewords:20 }}</p>
  15.         <p>Published on {{ post.pub_date }}</p>
  16.         <a href="{% url 'post_edit' post.pk %}">Edit</a>
  17.         <a href="{% url 'post_delete' post.pk %}">Delete</a>
  18.     {% endfor %}
  19. </body>
  20. </html>
复制代码
#### `post_detail.html`
html
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>{{ post.title }}</title>
  6. </head>
  7. <body>
  8.     <h1>{{ post.title }}</h1>
  9.     <p>{{ post.content }}</p>
  10.     <p>Published on {{ post.pub_date }}</p>
  11.     <a href="{% url 'post_edit' post.pk %}">Edit</a>
  12.     <a href="{% url 'post_delete' post.pk %}">Delete</a>
  13.     <a href="{% url 'post_list' %}">Back to List</a>
  14. </body>
  15. </html>
复制代码
#### `post_form.html`
html
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>{% if form.instance.pk %}Edit Post{% else %}New Post{% endif %}</title>
  6. </head>
  7. <body>
  8.     <h1>{% if form.instance.pk %}Edit Post{% else %}New Post{% endif %}</h1>
  9.     <form method="post">
  10.         {% csrf_token %}
  11.         {{ form.as_p }}
  12.         <button type="submit">Save</button>
  13.     </form>
  14.     <a href="{% url 'post_list' %}">Cancel</a>
  15. </body>
  16. </html>
复制代码
步调 10:运行项目
bash
  1. python manage.py runserver
复制代码
如今,你可以在浏览器中访问 `http://127.0.0.1:8000/` 查看博客系统。你可以创建、查看、编辑和删除博客文章。
 
有不会的问题尽可来私信询问噢~
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

老婆出轨

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表