百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

django留言板_留言板html好看的模板

yund56 2025-02-25 00:46 91 浏览

使用Django制作一个留言板,使用template做前端,ORM做后端。用户之前已经询问过Django的教程,现在想做一个具体的项目。首先,我需要回顾之前的教程内容,确保步骤一致,并补充用户可能需要的额外信息。

用户的需求明确:留言板,前后端分别用Django的模板和ORM。这意味着需要创建模型处理数据,视图处理逻辑,模板展示页面,以及URL路由。可能还需要表单让用户提交留言,但用户没有提到使用Django表单,所以可能需要手动处理POST数据。

首先,创建Django项目和应用是基础步骤,用户之前的教程已经覆盖,但可能需要提醒用户执行startproject和startapp命令。接下来是模型部分,留言板需要一个模型来存储留言内容,比如标题、内容、作者、创建时间等字段。使用ORM定义模型,然后生成迁移文件和应用迁移。

然后是视图部分,需要处理GET和POST请求。GET请求显示留言列表,POST请求处理用户提交的新留言。在视图中,需要获取所有留言对象传递给模板,同时处理表单提交,验证数据后保存到数据库。这里可能需要使用Django的request.POST来获取数据,或者使用Django的Form类,但用户可能希望简化,所以直接处理POST数据更直接。

模板方面,需要创建一个HTML页面展示留言列表和一个表单供用户提交新留言。要使用Django模板语言循环显示留言,并处理表单的提交动作,确保CSRF令牌的存在。可能需要指导用户如何组织模板目录,确保settings.py中的TEMPLATES配置正确。

URL配置需要将路径映射到视图函数,包括处理根路径和提交留言的路径。可能需要创建应用级别的urls.py并包含到项目URL中。此外,用户可能需要静态文件配置,比如CSS,但用户没有特别提到,所以可能暂时忽略,或者简单提及。

测试部分,用户可能需要知道如何运行服务器,访问页面,提交留言并查看结果。还需要提醒用户创建超级用户,可能通过admin界面管理留言,但用户可能更倾向于直接在前端提交,所以可能需要在模型中设置默认的作者字段,或者允许匿名提交,这里可能需要调整模型,比如允许作者为空或设置默认值。

可能的难点包括处理表单的POST请求,特别是CSRF保护,需要在模板中添加{% csrf_token %}。另外,日期时间的处理,比如auto_now_add自动设置创建时间。还有在视图中如何重定向以防止重复提交,使用redirect函数返回到首页。

需要检查用户是否了解如何运行服务器,执行迁移命令,以及可能的错误处理,比如表单验证不通过时的提示。如果用户没有使用Django表单,可能需要手动验证字段,比如确保标题和内容不为空,但为了简化,可能暂时跳过,只在保存前进行基本检查。

最后,确保步骤清晰,代码示例正确,特别是模板中的变量名称与视图中传递的上下文一致。例如,视图中的articles变量在模板中循环显示。同时,表单的action属性指向正确的URL,比如/submit/,并在urls.py中配置对应的路径。

可能还需要提醒用户关于安全性的问题,比如在生产环境中需要更多的验证和防护措施,但在此示例中以简单实现为主。总结来说,步骤包括:创建项目和应用,定义模型,配置URL,编写视图和模板,处理表单提交,运行测试。

以下是使用 Django 制作留言板的完整步骤,包含模板(前端)和 ORM(后端):


1. 创建项目和应用


django-admin startproject messageboard
cd messageboard
python manage.py startapp board

2. 配置项目设置

修改 messageboard/settings.py:


INSTALLED_APPS = [
    ...
    'board',  # 添加新应用
]

# 配置模板路径
TEMPLATES = [
    {
        'DIRS': [BASE_DIR / 'templates'],  # 全局模板目录
        ...
    },
]

# 配置静态文件(CSS/JS)
STATIC_URL = '/static/'
STATICFILES_DIRS = [BASE_DIR / 'static']  # 可选,存放全局静态文件

3. 创建留言模型(ORM)

在 board/models.py 中定义模型:

from django.db import models
from django.utils import timezone

class Message(models.Model):
    author = models.CharField(max_length=50, verbose_name='作者')
    content = models.TextField(verbose_name='内容')
    created_at = models.DateTimeField(default=timezone.now, verbose_name='发布时间')

    def __str__(self):
        return f"{self.author}: {self.content[:20]}"

生成并应用迁移:

python manage.py makemigrations
python manage.py migrate

4. 创建视图逻辑

在 board/views.py 中编写视图:

from django.shortcuts import render, redirect
from .models import Message

def message_list(request):
    # 显示所有留言
    messages = Message.objects.all().order_by('-created_at')
    return render(request, 'board/message_list.html', {'messages': messages})

def submit_message(request):
    # 处理表单提交
    if request.method == 'POST':
        author = request.POST.get('author')
        content = request.POST.get('content')
        if author and content:
            Message.objects.create(author=author, content=content)
        return redirect('message_list')  # 提交后重定向到列表页
    return redirect('message_list')  # 非 POST 请求也重定向

5. 配置 URL 路由

  • 项目路由 (messageboard/urls.py):


from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('board.urls')),
]
  • 应用路由 (board/urls.py,需手动创建):
from django.urls import path
from . import views

urlpatterns = [
    path('', views.message_list, name='message_list'),
    path('submit/', views.submit_message, name='submit_message'),
]

6. 创建模板(前端)


templates/board/message_list.html 中编写模板:





    留言板
    


    

留言板

{% for message in messages %}

{{ message.author }} · {{ message.created_at }}

{{ message.content }}

{% endfor %}

发表留言

{% csrf_token %}



7. 启动服务器并测试

python manage.py runserver

访问 http://127.0.0.1:8000/,效果如下:

  • 显示所有留言(按时间倒序)
  • 通过表单提交新留言
  • 提交后自动刷新页面显示新留言

8. 扩展功能(可选)

添加分页

修改视图 message_list:


from django.core.paginator import Paginator

def message_list(request):
    messages = Message.objects.all().order_by('-created_at')
    paginator = Paginator(messages, 5)  # 每页5条
    page_number = request.GET.get('page')
    page_obj = paginator.get_page(page_number)
    return render(request, 'board/message_list.html', {'page_obj': page_obj})

修改模板:




添加管理后台

在 board/admin.py 中注册模型:


from django.contrib import admin
from .models import Message

admin.site.register(Message)

创建超级用户:


python manage.py createsuperuser

访问
http://127.0.0.1:8000/admin 管理留言。


最终效果

  • 用户通过表单提交留言(作者和内容)
  • 留言按时间倒序显示
  • 基础样式优化
  • 支持分页和管理后台

相关推荐

重生之我在头条学html网页编程,这一世我一定学好,成为编程高手

有人要问了html是什么东西?就是用来设计网页的一种语言会不会很难啊?这是很多朋友担心的,我告诉大家这是最简单最基础也最容易学习的一款入门级语言,当初我也是经常因为学不会C语言而苦恼自从学习了html...

如何在网页3D CAD中创建一个三维管道模型

前言在网页CAD中进行三维建模是一项有趣的任务。本文将介绍如何利用mxcad3d来创建三维管道模型。该工具提供了一系列三维建模功能的API,使得建立复杂的管道结构变得简单直观。安装在此之前,需要先安装...

网页模版如何用

网页模版已成为如今网站建设的核心工具。随着互联网需求的增长,越来越多的企业和组织需要建立自己的网站,以展示他们的品牌和服务。在这个过程中,网页模版为他们提供了一种简单而高效的方式来构建网站。所谓网页模...

AI嵌入式Flowcode编程网页开发人员入门指南

WebDeveloper允许使用FlowcodeIDE环境开发具有交互性的网页。可以在2D面板中添加特殊网页组件,以创建网页的视觉表示,并可以使用流程图添加交互功能。它的引入意味着Flowcod...

用Deepseek制作网页版的汉诺塔游戏保姆级教程

在deepseek中输入:“帮我做一个网页版的汉诺塔演示游戏,游戏包含2层、3层、4层、5层的汉诺塔游戏演示,制作自动求解演示按钮,点击按钮就可以生成出步数,同时自动演示最优解动画。”最后把生成的程序...

TaskBuilder前端页面CSS样式规则设置

在前端页面设计器内,点击底部的“CSS样式”选项卡,可以打开CSS样式设计器,在此查看和设计当前页面的CSS样式规则,如下图所示:3.3.6.1引入外部样式文件如果要在页面中引入外部CSS文件,可以点...

使用 Python、FastHTML 和 Uvicorn 构建简单的博客网站

FastHTML是2024年7月推出的PythonWeb框架,是一个简单但功能强大的框架,允许开发人员使用纯Python构建Web应用程序。(不需要复杂的模板引擎)。Fast...

用AI可以生成HTML网页了,很多初级前端都要失业了

即使你完全不懂html,javascript,css,也能做出漂亮的网页,这在以前是不可想象的,而现在确是可行的,因为有这样一个项目:openUI。openUI不仅仅能生成html页面,还能生成自适应...

python原始套接字socket下载http网页文件到txt

python原始套接字socket下载http网页文件到txtimportsocketdefdownload_webpage(url,output_file):try:...

高效排版:实现DeepSeek生成内容Word格式排版并导...

高效排版:实现DeepSeek生成内容Word格式排版并导出的经典方法,步骤简洁高效:DeepSeek生成内容复制出来容易出现乱码,下面介绍一种比较高效简单的方法!一、核心三步法1.调整模型模式在D...

打工人福音!3分钟教你学会word精美排版

昨天大熊介绍了word一键排版的三种办法,今天我们来详细讲讲第二种办法,用html代码实现一键排版,然后再导出pdf实现精美效果。打工人,打工魂,你是不是也有以下烦恼?下面是我经过多次和Deepsee...

使用 HTML 创建可折叠的交互式组件,一行 JS 代...

如果你想创建一个可折叠的交互式组件,使用<details>元素即可,一行JavaScript也不用写。<details>组件定义了一个可折叠的容器,它的第一个元素必须...

新手小白1分钟学会Word——文档的编辑1.1

天空一声巨响,迷人的我闪亮登场,亲爱的家人们,周末好呀!话不多说,咱们继续开干!昨天说到本节还有个小尾巴,那咱们就把这个小尾巴了结了,然后开始新篇章~四、保存文档我们对文档编辑完之后最重要的一步就...

超强!DeepSeek+HTML制作数据看板,老板看了都点赞

DeepSeek以极强的推理能力,支持生成各种代码,比如Python、SQL、Matlab、JS、HTML等,你可以拿这些代码放到编译器里,就能直接跑出结果,比如机器学习算法、exe应用、可视化图表、...

什么是Tailwind CSS

什么是TailwindCSSTailwindCSS是一个实用优先(Utility-First)的CSS框架,其核心思想是通过直接在HTML中组合预定义的类名来快速构建界面样式,无需编写传...