【毕业设计之python系列】惠经学校教育论坛网站(下)

简介: 【毕业设计之python系列】惠经学校教育论坛网站(下)

3.4.3 论坛页面实现


Django的视图函数,包含两个功能:

GET请求时,返回发布页面,并从数据库中获取所有帖子分类,并传递给模板以便渲染。

       POST请求时,从前端获取用户输入的帖子标题、简介、内容、分类、图片等信息,并将其存入数据库中。如果用户同时上传了图片,则将其保存到服务器上,并将图片路径存入数据库中。最后重定向到刚刚发布的帖子页面。

       在单个帖子页面(single)的GET请求中,从数据库中获取帖子的各项信息,并将其传递给模板以便渲染。其中包括帖子的ID、作者ID、发布时间、分类、标题、内容、图片、简介等信息,以及当前用户的ID和管理员ID。

1. # 发布页
2. 
3. def publish(request):
4. 
5.     if request.method == 'GET':
6. 
7.         kinds = models.Kind.objects.filter()
8. 
9.         response = {
10. 
11.             'kinds': kinds
12. 
13.         }
14. 
15.         return render(request, 'publish.html', response)
16. 
17.     elif request.method == 'POST':
18. 
19.         # session获取uid
20. 
21.         uid = request.session['uid']
22. 
23.         # 提交发布的文章
24. 
25.         t_title = request.POST.get('t_title')
26. 
27.         t_introduce = request.POST.get('t_introduce')
28. 
29.         t_content = request.POST.get('t_content')
30. 
31.         t_kind = request.POST.get('t_kind')
32. 
33.         print(t_title, t_introduce)
34. 
35. 
36. 
37.         obj = models.Topic.objects.create(t_title=t_title, t_introduce=t_introduce,
38. 
39.                                           t_content=t_content, t_kind=t_kind, t_uid=uid)
40. 
41.         t_id = obj.id
42. 
43. 
44. 
45.         # 存帖子图片
46. 
47.         t_photo = request.FILES.get('t_photo', None)
48. 
49.         t_photo_path = 'static/img/t_photo/' + str(t_id) + '_' + t_photo.name
50. 
51. 
52. 
53.         if t_photo:
54. 
55.             # 保存文件
56. 
57.             import os
58. 
59.             f = open(os.path.join(t_photo_path), 'wb')
60. 
61.             for line in t_photo.chunks():
62. 
63.                 f.write(line)
64. 
65.             f.close()
66. 
67. 
68. 
69.         # 吧图片路径存入数据库
70. 
71.         models.Topic.objects.filter(id=t_id).update(t_photo='/'+t_photo_path)
72. 
73. 
74. 
75.         return redirect('/single/' + str(t_id))
76. 
77. 
78. 
79. # 单个帖子页面
80. 
81. def single(request, tid):
82. 
83.     if request.method == 'GET':
84. 
85.         # 帖子内容
86. 
87.         # 时间类别作者,标题,正文,图片path
88. 
89.         try:
90. 
91.             topic = models.Topic.objects.get(id=tid)
92. 
93.         except Exception as e:
94. 
95.             return redirect('/home')
96. 
97. 
98. 
99.         t_time = topic.create_time
100. 
101.         t_kind = topic.t_kind
102. 
103.         t_title = topic.t_title
104. 
105.         t_content = topic.t_content
106. 
107.         t_photo = topic.t_photo
108. 
109.         t_uid = topic.t_uid
110. 
111.         t_introduce = topic.t_introduce
112. 
113.         uid = request.session['uid']
114. 
115.         admin_uid = request.session.get('admin_uid')
116. 
117.         response = {
118. 
119.             'tid': tid,
120. 
121.             't_uid': t_uid,
122. 
123.             't_time': t_time,
124. 
125.             't_kind': t_kind,
126. 
127.             't_title': t_title,
128. 
129.             't_content': t_content,
130. 
131.             't_photo': t_photo,
132. 
133.             't_introduce': t_introduce,
134. 
135.             'uid': uid,
136. 
137.             'admin_uid': admin_uid,
138. 
139.         }

 

图6 发帖

 

图7 留言

3.4.4 论坛留言板实现


用户可以在文本框中输入留言内容,并上传图片后提交留言。


1. <div class="row" style="width: 90%;margin: 0 auto;">
2. 
3.         <h2>我要留言</h2>
4. 
5.         <form action="/single/{{ tid }}/" method="post" enctype="multipart/form-data">
6. 
7.             {% csrf_token %}
8. 
9.             <div style="margin: 0 auto;">
10. 
11.                 <textarea style="width: 95%;height: 200px;" cols="62" rows="20" name="r_content"></textarea>
12. 
13.             </div>
14. 
15.             图片:
16. 
17.             <input type="file" name="r_photo">
18. 
19.             <input type="submit" value="提交" style="float: right;">
20. 
21.         </form>
22. 
23. </div>

 

图8 留言

3.4.5 搜索功能实现


用户可以在输入框中输入搜索内容,然后点击“搜索”按钮进行搜索。该表单使用POST方法提交数据到网站的“/all-0-0-0”页面,并包含一个CSRF令牌以确保安全性。  


1.    <form action="/all-0-0-0" method="post" style="margin-left: 0; width: 350px;" class="span5 logo navbar-form navbar-left">
2. 
3.             {% csrf_token %}
4. 
5.             <div style="float: left;" class="form-group">
6. 
7.                 <input name="keys" type="text" class="form-control" placeholder="请输入搜索内容">
8. 
9.             </div>
10. 
11.             <button style="margin-top: 4px; margin-left: 10px" type="submit" class="btn btn-default">搜索</button>
12. 
13.         </form>

 

图9 搜索功能

3.4.6 数据库的连接


在settings.py文件下配置连接mysql数据,填写相应的ip地址,数据库名称,用户账号密码等。


图10 数据库的连接

 

4.解决问题的方案


4.1 解决问题的总体方案:


创建 Django 项目和应用程序:使用 Django 命令行工具创建一个新的 Django 项目和应用程序。

定义数据模型:定义用户、权限、留言板、帖子、评论等模型,并将其映射到数据库中。

编写视图函数:编写处理请求的视图函数,这些函数负责渲染 HTML 模板并将其发送给客户端。

创建 URL 映射:创建 URL 映射将请求路由到正确的视图函数。

实现用户注册和登录:使用 Django 内置的身份验证系统实现用户注册和登录功能。

分配用户权限:使用 Django 的权限系统为不同的用户分配不同的权限。


4.2 方案的主要部分说明或技术分析:


       Django 项目和应用程序:Django 提供了命令行工具和模板,帮助我们快速创建项目和应用程序。在项目中,我们需要配置数据库、静态文件和模板路径等。

       数据模型:数据模型是构建 Web 应用程序的核心。我们可以使用 Django 的 ORM(Object Relational Mapping)来定义数据模型,并将其映射到数据库中。在该学校教育论坛网站中,我们需要定义用户、权限、留言板、帖子、评论等模型。

       视图函数:视图函数负责渲染 HTML 模板并将其发送给客户端。在 Django 中,我们可以使用视图函数或基于类的视图来处理请求。视图函数需要接收请求作为参数,并返回 HTTP 响应。

       URL 映射:URL 映射将请求路由到正确的视图函数。在 Django 中,我们可以使用正则表达式或基于类的视图来定义 URL 映射。URL 映射还可以传递参数给视图函数。

       用户注册和登录:Django 内置了身份验证系统,可以轻松地实现用户注册和登录功能。我们需要定义相应的表单和视图函数,以便用户填写信息并将其保存到数据库中。

       分配用户权限:Django 提供了内置的权限系统,可以轻松地为不同的用户分配不同的权限。我们需要定义相应的权限和角色,并将其分配给不同的用户。


4.3 方案可行性分析:


       基于Django的学校教育论坛网站方案具有一定的可行性,下面我分别从技术可行性、经济可行性和社会可行性与您进行分析:

技术可行性

       Django是一个开源的Web应用框架,具有成熟稳定、易扩展等特点。该方案所需要的技术基本都已经成熟并得到了广泛应用,而且Django还提供了很多扩展模块和插件,可以满足项目的需求。因此,从技术角度来看,该方案具有较高的可行性。

经济可行性

       建设一个学校教育论坛网站需要投入一定的资金,包括服务器租赁、软件开发、人员培训等方面的费用。但是,随着互联网技术的不断发展,建设一个在线教育平台已经成为学校教育的必要手段之一,因此该方案具有较好的市场前景。如果能够合理规划项目预算,并且通过合理的推广策略吸引更多的用户,那么该方案具有良好的经济可行性。

社会可行性

       学校教育论坛网站是一个教育信息共享的平台,可以提供学生和教师之间互相交流、分享经验和知识的机会。该方案有利于促进教育信息数字化和教育资源共享,同时也可以为广大用户提供便捷的学习和交流平台。因此,该方案具有一定的社会可行性。

       总的来说,基于Django的学校教育论坛网站方案具有较高的技术可行性、良好的经济可行性和一定的社会可行性。但在实施过程中,还需注意合理规划项目预算,加强对用户的推广和宣传,提升网站的使用体验等方面的问题。


5.结论


       惠经学校教育论坛网站是一个重要的教育信息化平台,可以为学生、教师和家长提供一个交流、分享和学习的场所。基于django的学校教育论坛网站开发可以帮助学校更好地实现教育信息化,提高学校的教育教学质量。未来,学校教育论坛网站将继续发挥重要的作用,为学生、教师和家长提供更好的学习和交流平台。

参考文献


[1] 刘志军,陈建华. Web应用开发:基于Django框架和Python语言[M]. 北京:清华大学出版社,2012.

[2] 杨杰. Python编程快速上手[M]. 北京:机械工业出版社,2017.

[3] 郑宝华,赵海涛,朱磊. Django企业级Web开发实战[M]. 北京:人民邮电出版社,2015.

[4] 潘茂林. Python Web开发:Django实战[M]. 北京:人民邮电出版社,2015.

[5] 李建中.基于Django的在线教育平台设计与实现.计算机与数字工程,2018.

[6] 杨涛.基于Django的学校信息管理系统设计与实现.计算机工程与设计,2015.

[7] 张荣涛.基于Django的学校教学资源管理系统设计与实现.计算机工程与设计,2019.

[8] 李春辉. 基于Python的Web编程[M]. 北京:机械工业出版社,2016.

[9] 郑红.基于Django的校园招聘信息管理系统设计与实现,计算机工程与应用,2018.

[10] 高超,王雪松. Django Web开发实战[M]. 北京:机械工业出版社,2018.

致  谢


       首先,我要感谢我的指导老师对我毕业设计过程中的悉心指导和不断鼓励。他在选题、研究方向以及论文结构等方面给予了我很多宝贵的建议,并且在遇到困难时给予了我不计其数的帮助和支持。没有他的认真指导和不断关注,我无法完成这篇毕业论文。同时,我也要感谢学院的各位老师和同学们,他们在毕业设计期间给我提供了充足的时间和空间,使我能够专注研究,全身心地投入到毕业论文的写作工作中。

       此外,我还要感谢我所从事的公司,他们为我提供了必要的数据、资源和技术支持。在毕业设计的整个过程中,他们给予了我很多的帮助,为我提供了一个良好的研究环境和条件。

       最后,我要感谢所有曾经帮助过我的人,同时感谢我的父母,他们在论文期间与我交流,分担我的心理压力,在日常生活中给予我帮助,在学习精神上鼓励我。

       最后,向这群心甘情愿帮助我的人表示感谢和衷心的感谢。


附录


       Django是一个Web框架,它可以用于开发基于Web的应用程序,而Web应用程序的架构通常基于BS(Browser-Server)结构。因此,可以说Django应用程序本身是基于B/S结构的。

       Django是一种基于MVC(Model-View-Controller)结构的Web框架。但是,Django将MVC架构中的“控制器”(Controller)称为“视图”(View),并引入了一个名为“模型”(Model)的组件,用于处理与数据库的交互。因此,Django的结构也被称为MTV(Model-Template-View)结构。在MTV结构中,模型(Model)处理与数据库的交互,模板(Template)处理用户界面,视图(View)处理业务逻辑和用户请求。这种分离的结构使得Django应用程序易于维护和扩展。

此论文维普查重已过,23年做的,详细资料可以关注私信我,Python,Java,php,html,c语言,微信小程序,APP,安卓,物联网等毕业设计都可找我。

目录
相关文章
|
2月前
|
数据采集 数据可视化 数据挖掘
Python爬虫实战:抓取网站数据并生成报表
本文将介绍如何使用Python编写简单而高效的网络爬虫,从指定的网站上抓取数据,并利用数据分析库生成可视化报表。通过学习本文内容,读者将能够掌握基本的爬虫技术和数据处理方法,为日后开发更复杂的数据采集与分析工具打下坚实基础。
|
2月前
|
前端开发 关系型数据库 MySQL
基于python+mysql的宠物领养网站系统
基于python+mysql的宠物领养网站系统
36 2
|
3月前
|
Python
Python 采集某网站音乐
Python 采集某网站音乐
19 0
|
3月前
|
XML 数据采集 数据挖掘
python教程|如何批量从大量异构网站网页中获取其主要文本?
今天我们就一起来看看,如何利用Python从大量异构网站中批量获取其主要文本的方法。
|
3月前
|
Python
Python采集网站随机header
Python采集网站随机header
27 1
|
4月前
|
缓存 前端开发 JavaScript
Python毕业设计|课程设计|基于Python+Djingo实现个人博客系统
Python毕业设计|课程设计|基于Python+Djingo实现个人博客系统
|
19天前
|
存储 定位技术 数据库
【python毕业设计】python基于Pygame的吃金币游戏设计与实现(源码+毕业论文)【独一无二】
【python毕业设计】python基于Pygame的吃金币游戏设计与实现(源码+毕业论文)【独一无二】
|
25天前
|
前端开发 测试技术 数据库
【python】为什么使用python Django开发网站这么火?
【python】为什么使用python Django开发网站这么火?
|
1月前
|
数据采集 存储 数据挖掘
Python爬虫实战:打造一个简单的新闻网站数据爬取工具
本文将介绍如何运用Python编写一个简单而高效的网络爬虫,帮助您在实际项目中快速获取并存储新闻网站的数据。通过学习本文,您将了解到如何利用Python中的第三方库和技术来实现数据爬取,为您的数据分析和应用提供更多可能性。
|
3月前
|
数据采集 监控 前端开发
盘点49个Python网站项目Python爱好者不容错过
盘点49个Python网站项目Python爱好者不容错过
18 3