基于Django+MySQL的B/S模式云端留言系统之留言提交与查看
本文是上一篇博文的后续部分,上一篇博文已经实现了: 基于Django+MySQL的B/S模式云端留言系统之登录页面 。
本文将在此基础上实现用户在页面登陆成功后的留言提交与查看。为了方便读者阅读方便,以下对上一博文中已经实现的内容进行简单的概括:
-
安装MySQL:首先,请确保已在与ubuntu可连接的机子上安装并配置好MySQL数据库。
-
在ubuntu环境中使用Django框架的创建好相关项目
-
进入项目目录:使用以下命令进入项目目录:
-
在项目中创建Django应用程序 app(业务app创建成功后自动生成views .py,models.py等文件)
-
配置数据库:打开项目目录下的
settings.py
文件,在DATABASES
部分,配置MySQL数据库连接信息 -
创建留言模型:在业务app应用程序的
models.py
文件中定义一个留言模型(数据库存放的表)。例如:from django.db import models class Message(models.Model): #*注意列定义之间 没有逗号* user = models.CharField(max_length=255) # 添加了 max_length 参数 content = models.TextField() created_at = models.DateTimeField(auto_now_add=True) ```
-
迁移数据库:运行以下命令以创建数据库表:
python manage.py makemigrations python manage.py migrate ```
-
创建视图函数:在业务应用程序的
views.py
文件中编写业务视图函数,用于处理留言的提交和查看。例如:from django.shortcuts import render, redirect from .models import Message def submit_message(request): if request.method == 'POST': content1= request.POST.get('c') # 与下文submit_message.html代码中 name=“c”对应 user_name1=request.POST.get('u')#与下文submit_message.html代码中 name=“u”对应 message = Message(content=content1,user=user_name1) #往数据模型中写入数据,时间可以系统自动获取 message.save() #数据保存 return redirect('view_messages') return render(request, 'submit_message.html') def view_messages(request): #留言查看 messages = Message.objects.all()# 查看所有留言 user_name1=request.POST.get('u') messages = Message.objects.filter(user=user_name1) #条件查询,与上面一行的全查询可以2选1 return render(request, 'view_messages.html', {'messages': messages}) #此处的messages与view_messages.py 中的messages保持一致 ```
-
创建模板文件:在业务应用程序的
templates
目录中创建submit_message.html
和view_messages.html
模板文件,用于呈现留言提交和查看的页面。
submit_message.html
和view_messages.html
的参考:
submit_message.html:
<!DOCTYPE html>
<html>
<head>
<title>Submit Message</title>
</head>
<body>
<h1>Submit Message</h1>
<form method="post" action="{% url 'submit_message' %}"> #这个submit_message是与下文中(11.URL配置路由)urls.py代码中定义的path对应的name属性值
{% csrf_token %} #安全检查
<textarea name="c" rows="4" cols="50"></textarea><br><br>
<input type="text" id="txtPassword" name="u">
<input type="submit" value="Submit">
</form>
</body>
</html>
注意:以上HTML中textarea 是 HTML 的一个标签,用于创建多行文本输入框。即用户可以输入多行文本内容。它具有两个属性:name 和 rows、cols。
name 属性用于指定文本输入框的名称,当表单被提交时,该名称将被用作该字段的标识符,以便在后端代码中处理用户输入。这个代码里的name=“c”,c将在views .py中用作接收客户在浏览器中输入的数据
rows 属性用于指定文本输入框的行数,决定了文本框在垂直方向上的可见高度。
cols 属性用于指定文本输入框的列数,决定了文本框在水平方向上的可见宽度。
view_messages.html:
<!DOCTYPE html>
<html>
<head>
<title>View Messages</title>
</head>
<body>
<h1>View Messages</h1>
{% if messages %}
<ul>
{% for message in messages %} # 此处的message只要本html中使用处保持一致即可,但是messages需要与views.py 中对用的信息提交处理函数中的参数保持一致
<li>{{ message.user }}</li>
<li>{{ message.content }}</li>
<li>{{ message.create_at }}</li> #这里的user,content,create_at与是来自于messages的属性--也即是views.py中view_messages()函数所查询的表中对应的属性列,因此需要和models.py中定义的存放留言的表中有存在的列名才可以。
{% endfor %}
</ul>
{% else %}
<p>No messages found.</p>
{% endif %}
</body>
</html>
-
配置URL路由:打开项目目录下的
urls.py
文件,并添加以下代码来配置URL路由:from django.urls import path from myapp.views import submit_message, view_messages urlpatterns = [ path('submit/', submit_message, name='submit_message'),#此处的submit_message字符串将在submit_message.html作为url变量传递 path('view/', view_messages, name='view_messages'), ]
-
运行开发服务器:执行以下命令以启动Django开发服务器:
python3 manage.py runserver
-
访问应用程序:在Web浏览器中访问
http://localhost:8000/submit/
以提交留言,并访问http://localhost:8000/view/
以查看留言。(或者可以采用自定义地址和端口的方式启用并测试
经过以上步骤,我们使用MySQL和Django创建了一个简单的留言提交与查看系统。以上提供的只是一个简单的模板,可以根据你的具体需求,进一步扩展和丰富该系统。
请注意,确保将这些模板文件保存在正确的位置,即业务应用程序的templates
目录中。且需要把对应的连接URL接入 嵌入到上一篇博文的页面登陆后跳转,
即在上一篇博文中views.py 中的talk_login_au() 的 代码
return HttpResponse(‘HELLO’) 改为
return render(request,‘submit_message.html’)#用户信息验证成功后打开留言提交页面,如下图。