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

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

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

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


最终效果

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

相关推荐

SM小分队Girls on Top,女神战队少了f(x)?

这次由SM娱乐公司在冬季即将开演的smtown里,将公司的所有女团成员集结成了一个小分队project。第一位这是全面ACE的大姐成员权宝儿(BoA),出道二十年,在日本单人销量过千万,韩国国内200...

韩国女团 aespa 首场 VR 演唱会或暗示 Quest 3 将于 10 月推出

AmazeVR宣布将在十月份举办一场现场VR音乐会,观众将佩戴MetaQuest3进行体验。韩国女团aespa于2020年11月出道,此后在日本推出了三张金唱片,在韩国推出了...

韩网热议!女团aespa成员Giselle在长腿爱豆中真的是legend

身高163的Giselle,长腿傲人,身材比例绝了...

假唱而被骂爆的女团:IVE、NewJeans、aespa上榜

在韩国,其实K-pop偶像并不被认为是真正的歌手,因为偶像们必须兼备舞蹈能力、也经常透过对嘴来完成舞台。由于科技的日渐发达,也有许多网友会利用消音软体来验证K-pop偶像到底有没有开麦唱歌,导致假唱这...

新女团Aespa登时尚大片 四个少女四种style

来源:环球网

韩国女团aespa新歌MV曝光 画面梦幻造型超美

12月20日,韩国女团aespa翻唱曲《DreamsComeTrue》MV公开,视频中,她们的造型超美!WINTER背后长出一双梦幻般的翅膀。柳智敏笑容甜美。宁艺卓皮肤白皙。GISELLE五官精致...

女网友向拳头维权,自称是萨勒芬妮的原型?某韩国女团抄袭KDA

女英雄萨勒芬妮(Seraphine)是拳头在2020年推出的第五位新英雄,在还没有正式上线时就备受lsp玩家的关注,因为她实在是太可爱了。和其他新英雄不同的是,萨勒芬妮在没上线时就被拳头当成虚拟偶像来...

人气TOP女团是?INS粉丝数见分晓;TWICE成员为何在演唱会落泪?

现在的人气TOP女团是?INS粉丝数见分晓!现在爱豆和粉丝之间的交流方法变得多种多样,但是Instagram依然是主要的交流手段。很多粉丝根据粉丝数评价偶像的人气,拥有数百、数千万粉丝的组合作为全球偶...

韩国女团MVaespa Drama MV_韩国女团穿超短裙子跳舞

WelcometoDrama.Pleasefollow4ruleswhilewatchingtheDrama.·1)Lookbackimmediatelywhenyoufe...

aespa师妹团今年将出道! SM职员亲口曝「新女团风格、人数」

记者刘宛欣/综合报导南韩造星工厂SM娱乐曾打造出东方神起、SUPERJUNIOR、少女时代、SHINee、EXO等传奇团体,近年推出的aespa、RIIZE更是双双成为新生代一线团体,深受大众与粉丝...

南韩最活跃的女团aespa,新专辑《Girls》即将发布,盘点昔日经典

女团aespa歌曲盘点,新专辑《Girls》即将发布,期待大火。明天也就是2022年的7月8号,aespa新专辑《Girls》即将发行。这是继首张专辑《Savage》之后,时隔19个月的第二张专辑,这...

章泽天女团aespa出席戛纳晚宴 宋康昊携新片亮相

搜狐娱乐讯(山今/文玄反影/图科明/视频)法国时间5月23日晚,女团aespa、宋康昊、章泽天等明星亮相戛纳晚宴。章泽天身姿优越。章泽天肩颈线优越。章泽天双臂纤细。章泽天仪态端正。女团aespa亮...

Aespa舞台暴露身高比例,宁艺卓脸大,柳智敏有“TOP”相

作为SM公司最新女团aespa,初舞台《BlackMamba》公开,在初舞台里,看得出来SM公司是下了大功夫的,虽然之前SM公司新出的女团都有很长的先导片,但是aespa显然是有“特殊待遇”。运用了...

AESPA女团成员柳智敏karina大美女

真队内速度最快最火达成队内首个且唯一两百万点赞五代男女团中输断层第一(图转自微博)...

对来学校演出的女团成员语言性骚扰?韩国这所男高的学生恶心透了

哕了……本月4日,景福男子高中相关人士称已经找到了在SNS中上传对aespa成员进行性骚扰文章的学生,并开始着手调查。2日,SM娱乐创始人李秀满的母校——景福高中迎来了建校101周年庆典活动。当天,S...