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

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

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

使用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 管理留言。


最终效果

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

相关推荐

出纳常用表格模板,输入参数自动生成报表和图表,还不赶紧收藏

对于刚入职的会计新人来说,经常会为表格感到烦恼!今天,小编和大家分享12套出纳表格模板,输入参数自动生成报表和图表,自己试了下,每一个模板都很实用、直接套用就行了!表格是每个会计都必须要做的工作!刚上...

全自动Excel合并报表底稿及表格模板,附抵消分录,可直接套用

合并报表编制太难了,一工作就头条?今天小帮手给大家分享一下快速制作合并报表的小秘密,一套全自动Excel合并报表底稿及表格模板,附带抵消分录的总结,能够帮助大家解决80%的合报问题,并且让你的工作变得...

高考志愿填报表格真实样板

前面分享的6篇文章,对新高考和老高考都有参考价值,现在这篇文章只对老高考地区的考生填报志愿有帮助。因为我儿子去年高考,咱只熟悉老高考填志愿方法。老高考是平行志愿,分数优先,遵循志愿,一次投档。20...

填空即用的DeepSeek新手提示词模板

刚接触DeepSeek的你,是不是总被"专业提示词"搞得头大?其实AI根本不吃复杂套路!我扒遍全网100+爆款教程,结合实测经验,总结出这套填空式万能公式,让你用"说人话...

使用金山表单收集信息实例教程

金山表单,原WPS表单,包括创建问卷调查、信息统计、考试测评、投票、接龙等多种应用,目前这些应用全部免费使用,今天,我以实例的形式为大家介绍用表单创建一个学生信息收集表,收集学生信息。通过这个实例给大...

DeepSeek格式调用模板大全

为了使用DeepSeek生成特定格式的输出(如表格、代码、文档等),您需要明确指定输出格式和内容要求。以下是不同格式的提问模板示例,帮助您快速获取所需结果:1.表格格式输出提问模板:请将以下内容整理...

方便、高效、实用,基于 JAVA WEB 的开源问卷表单系统源码分享

一款方便、高效、实用的调研问卷系统,一款基于JAVAWEB的开源问卷表单系统。关注转发之后私信回复【源码】即可免费获取到!安装因为DWSurvey是基于JAVAWEB实现,所以安装与一般的JA...

超全!出纳需要的报表模板都在这里了

超全!出纳需要的报表模板都在这里了(文末送上免费完整版领取方式)财务工作中,你是否遇到焦头烂额不知如何解决的问题呢?(此处已添加小程序,请到今日头条客户端查看)好了,由于篇幅原因,就和大家分享到这里,...

制作自动化仓库入库单,数据录入、计算及保存只需一键完成

Excel除了我们日常的数据整理,利用表格特有的代码功能,我们还可以实现一些高级的数据操作。比如说仓库入库单的制作,它能够实现通过点击自动完成数据录入、计算以及保存等操作。上面就是我们仓库入库单的效果...

不用写代码,文件夹跨多个Excel工作簿,自动生成透视表数据

举个例子,下面是某个公司,不同店铺的销售数据,放在同一个文件夹里面然后每个店铺的工作簿里面的数据格式是一样的,记录的是各店铺的销售流水数据,如下所示:我们需要快速汇总4个店铺的销售数据,在一个汇总表里...

「JVS低代码开发平台」表单的打印配置

表单的打印在表单引擎中,对于非新增表单,都是可以配置对应的打印模板的,我们常见的形态有如下这些,可以是出入库的记录,也可能是公文文件等形态。在上述的图上,我们看到,有移库单、销售合同、报价单、差旅单...

花了7天,自己做了一套低代码表单设计器

在后台管理系统项目中,常常会遇到多样化、动态表单的功能需求,比如就合同管理系统中,涉及到的合同种类多达数千种,如果采用传统的前端开发方式,那么就需要开发数千个表单模板来适配这些合同种类,因此中高级前端...

三、flask博客项目实战-之表单

一、概述这是FlaskMega-Tutorial系列的第三部分,我将告诉你如何使用Web表单。在第二章中我为应用主页创建了一个简单的模板,并使用诸如用户和用户动态的模拟对象。在本章中,我将解决这个应...

周报、月报有多折磨人?万能报表模板建议收藏!(附模板)

老李写了10多年的周报,现在看人写周报、也依旧写周报。刚开始写周报的时候觉得很痛苦,不知道写什么,不知道怎么写,每周的事都差不多,翻来覆去的变着花样也没得写,而且写完之后感觉领导应该也不会看,所以非常...

30+款表单模板,让数据采集、审批流转变得简单高效!

你最近有填写或是绘制在线表单吗?答案应该是肯定的。虽然你感觉不到,但现在线上表单已经成为我们生活中不可或缺的一部分。包括注册账号、填写信息获取服务、问卷调查以及审批申请等等。然而相比填写表单,设计表单...