基于python的种子搜索网站(二)开发过程

news/2024/5/14 7:41:57/文章来源:https://blog.csdn.net/cpongo1/article/details/89547464

本讲会对种子搜索网站的开发过程进行详细的讲解。

网站演示: https://bt.mypython.me

源码地址: https://github.com/geeeeeeeek/bt

项目开发过程

项目简介

该项目是基于python的web类库django开发的一套web网站,做为本人的毕业设计。
本人的研究方向是一项关于搜索的研究项目。在该项目中,笔者开发了一个简单版的搜索网站,实现了对数据库数据的检索和更新。 网站域名为bt.mypython.me

启动项目

django-admin startproject bt 

创建应用

python3 manage.py startapp app

model设计

主要是对提交的链接进行设计,在此项目中,我们需要展示链接的名称、url、联系人、链接简介等字段。

设计字段如下:

class Link(models.Model):list_display = ("url","desc","contact")url = models.CharField(max_length=100,blank=True, null=True)title = models.CharField(max_length=100,blank=True, null=True)size = models.CharField(max_length=100,blank=True, null=True)hot = models.IntegerField(default=0)desc = models.CharField(max_length=200,blank=True, null=True)contact = models.CharField(max_length=100,blank=True, null=True)status = models.BooleanField(default=False)timestamp = models.DateTimeField(auto_now_add=True, null=True)objects = LinkQuerySet.as_manager()

业务编写

本项目一共分为4个页面,分别是首页、搜索列表页、详情页、链接提交页。

我们一一讲解

首页

首先是首页,它的模版位于templates/app/index.html 它主要是用来展示首页内容, 并提交搜索词,到搜索接口,所有的接口都位于app/urls.py里面,如下

app_name = 'app'
urlpatterns = [path('index', views.IndexView.as_view(), name='index'),path('search', views.SearchView.as_view(), name='search'),path('detail/<int:pk>', views.DetailView.as_view(), name='detail'),path('commit', views.CommitView.as_view(), name='commit'),
]

我们设置首页的路由为IndexView, 开始编写IndexView的代码。它的代码非常简单:

class IndexView(generic.TemplateView):template_name = 'app/index.html'

仅仅是展示了首页页面,首页将搜索词交给了search来处理,这一点,我们从index.html关于form的代码中可以看到, 提交给了url 'app:search'

 <form id="search-form" action="{% url 'app:search' %}" enctype="multipart/form-data" method="get" role="form"><input type="text" id="search" name="q" autocomplete="off" placeholder="搜搜你懂的"><input type="submit" id="btnSearch" value="搜 索" class="blue"></form>

列表展示页

从urls.py中可知,app:search指向了SearchView,这个类是本项目的核心代码,它实现了搜索的全过程。

class SearchView(generic.ListView):model = Linktemplate_name = 'app/search.html'context_object_name = 'link_list'paginate_by = 10q = ''       # 搜索词duration = 0 # 耗时record_count = 0def get_context_data(self, *, object_list=None, **kwargs):context = super(SearchView, self).get_context_data(**kwargs)paginator = context.get('paginator')page = context.get('page_obj')page_list = get_page_list(paginator, page)context['page_list'] = page_listcontext['q'] = self.qcontext['duration'] = round(self.duration,6)context['record_count'] = self.record_countreturn contextdef get_queryset(self):start = time.time()self.q = self.request.GET.get("q", "")search_list = Link.objects.get_search_list(self.q)# 如搜索为空,则放假数据if len(search_list) <= 0:search_list = Link.objects.get_fake_list()end = time.time()self.duration = end - startself.record_count = len(search_list)return search_list

继承了ListView通用类,通过get_queryset()回调函数来实现搜索功能,并通过get_context_data来传递额外的数据给前端。即是列表展示页。

详情页

我们再来开发详情页,从urls.py中看到,详情页是由DetailView来实现的,我们来窥探它的全貌:

class DetailView(generic.DetailView):model = Linktemplate_name = 'app/detail.html'def get_object(self, queryset=None):obj = super().get_object()obj.increase_hot_count()return objdef get_context_data(self, **kwargs):context = super(DetailView, self).get_context_data(**kwargs)recommend_list = Link.objects.get_recommend_list()context['recommend_list'] = recommend_listreturn context

它很简单,继承了DetailView通用模板类来显示详情。

链接提交页

最后再来看一下链接提交页,它是由CommitView来实现的。同样是观看代码:

class CommitView(generic.CreateView):model = Linkform_class = CommitFormtemplate_name = 'app/commit.html'@ratelimit(key='ip', rate='2/m')def post(self, request, *args, **kwargs):was_limited = getattr(request, 'limited', False)if was_limited:messages.warning(self.request, "操作太频繁了,请1分钟后再试")return render(request, 'app/commit.html', {'form': CommitForm()})return super().post(request, *args, **kwargs)def get_success_url(self):messages.success(self.request, "提交成功! 审核期3个工作日。")return reverse('app:commit')

它是继承自CreateView,因为是创建操作嘛,在post中,我们通过ratelimit来限制提交次数。

运行项目

python3 manage.py runserver

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_736935.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站架构的逐步优化演变

一&#xff1a;建站之初 *建站之初&#xff0c;站点流量非常小&#xff0c;可能低于十万级别。这意味着&#xff0c;平均每秒钟也就几次访问。请求量比较低&#xff0c;数据量比较小&#xff0c;代码量也比较小&#xff0c;几个工程师&#xff0c;很短的时间搭起这样的系统&…

可视化编辑网站模板拖拽式建站源码_模板建站缘何这么流行?

伴随着互联网技术的迅速发展&#xff0c;各式各样的平台网站层出不穷。网站模板变成企业建站的一部分&#xff0c;不仅是自身方便快捷的功能&#xff0c;更是未来发展前景的促进。网站模板就是网页模板&#xff0c;这里比较突出的当属开创者素材了&#xff0c;它采用网站制作软…

bootstrap下拉框选择没反应_SEO工具脚本,Python百度下拉框关键词采集工具

对于词的研究&#xff0c;想必每个seoer都知道&#xff0c;而除了比较热门的百度相关搜索词之外&#xff0c;百度下拉框关键词应该也是不少人研究的范围&#xff0c;不过大部分人都是针对下拉框词的刷量&#xff0c;毕竟百度下拉框关键词采集已经泛滥成灾了。百度下拉的官方正式…

服务器购买网站vuter,vscode中安装开发html5中需要的插件

vscode中安装开发html5中需要的插件vscode中安装开发html5中需要的插件最近在学习H5&#xff0c;也开始尝试着用vscode来写h5的代码。vscode是一个很不错的剪辑器&#xff0c;已经用它来写过php&#xff0c;python&#xff0c;还有vue的代码了。最近使用它写H5的代码&#xff0…

xampp配置PHP配置端口,【PHP】xampp配置多个监听端口和不同的网站目录(转)

windows下使用xampp配置多个监听端口和不同的网站目录一&#xff1a;配置Apache文件httpd.conf打开Apache的配置文件httpd.conf&#xff0c;可以通过点击xampp的Apache的config下的Apache(httpd.conf)打开。首先在Listen 80下面添加监听端口如Listen 8001Listen 8002然后在http…

css background-image 高度自适应_打造自适应网站只用一个CSS属性就够了

用一个CSS属性创建一个响应式网站&#xff0c;让我们来看看它是如何做到的。 以这个模板为例&#xff0c;没有应用css属性。 使用 clamp() CSS函数&#xff0c;我们可以创建仅具有一个属性的响应式网站。现在添加魔术CSSclamp(minimum, preferred, maximum);在这里&#xff01;…

打开是什么样子的图片_3个在线设计效果图网站,可以把图片生成网页扁平网页模板...

点击上方“字体传奇”→点右上角“...”→点选“设为星标★找到3个在线设计效果图网站&#xff0c;可以把图片生成网页扁平网页模板&#xff0c;在网站内上传一张图片&#xff0c;可以生成好几个不同风格的浏览器页面&#xff0c;照片等风格&#xff0c;背景色彩都是可以自定义…

论好用的云主机对于网站运营的重要性

网站的运营对于企业来说&#xff0c;其重要性是不必多言的&#xff0c;不管是企业还是个人&#xff0c;网搭建好后&#xff0c;只有很好地运营起来才能带来收益。既然后期的网站运营对于企业或个人网站来说如此重要&#xff0c;那影响网站后期运营的重要因素又有哪些呢&#xf…

网站被黑该怎么修复漏洞

近日wordpress被爆出高危的网站漏洞&#xff0c;该漏洞可以伪造代码进行远程代码执行&#xff0c;获取管理员的session以及获取cookies值&#xff0c;漏洞的产生是在于wordpress默认开启的文章评论功能&#xff0c;该功能在对评论的参数并没有进行详细的安全过滤与拦截&#xf…

找网站建设工作前的练习,织梦分页列表样式错误问题,没有可点击分页标签只有记录并且样式错误...

因为要去找工作&#xff0c;就想把自己先做个网站到时面试能加分。 于是&#xff0c;织梦登场&#xff0c;当然工作了可能也是必备的。 第一天&#xff0c;文档模板总是提示不存在&#xff0c;但是我已经改了啊&#xff0c;结果搜索了一天答案都没找到问题&#xff0c;第二天醒…

网站验证码的生成原理、难度控制,及python实现...

图片验证码已经广泛的使用在各种反爬虫的场景中&#xff0c;验证码的的生成验证过程对于开发者来说是零成本的&#xff0c;对于用户体验来说可能稍差、但是对于爬虫来说是致命的和高成本的。 下面将介绍使用python实现网站验证码的产生及验证的全过程&#xff0c;然我们对验证码…

C#实现一直疯狂get访问一个网站

好无聊&#xff0c;哈哈&#xff0c;就写了个这玩意&#xff0c;也没什么技术含量using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;using System.Net;using System.Threading;namespace aotoHttpGet{class Program{static…

JAVA游戏停产_烽火18台系列之十四:应急处置“网站一键关停”

前不久&#xff0c;“永恒之蓝“病毒肆虐整个互联网&#xff0c;各网络安全管理员们纷纷忙于打补丁、拔网线、做封堵&#xff0c;那种”想哭“的感觉还记忆犹新&#xff0c;那幅手忙脚乱的画面还历历在目。网络安全工作的重点已经从“防御”一切可能的攻击逐渐转向提升应对攻击…

网站程序有漏洞怎么修复和查找漏洞

ecshop目前最新版本为4.0&#xff0c;是国内开源的一套商城系统&#xff0c;很多外贸公司&#xff0c;以及电商平台都在使用&#xff0c;正因为使用的人数较多&#xff0c;很多攻击者都在挖掘该网站的漏洞&#xff0c;就在最近ecshop被爆出高危漏洞&#xff0c;该漏洞利用跨站伪…

java和seo学那个_seo和java哪个更好

一个seo行业站点&#xff0c;科学的内容制作应该与seo相关&#xff0c;且内容本身是有人搜索的。seo和java哪个更好是有人搜索的语句&#xff0c;且与seo是强相关的&#xff0c;对于seo教程自学网来讲&#xff0c;这样的内容再适合不过了。任何一门技术&#xff0c;如果精通&am…

网站被黑导致被西部数码关闭 提示有害信息未处理的解决方案...

前段时间有一客户的网站打不开了&#xff0c;打开网站被提示什么:抱歉&#xff0c;主机因存在有害信息逾期未处理被关闭 Sorry, the site now can not be accessed. 客户第一时间找到我们SINE安全寻求解决方案&#xff0c;我们根据客户的反馈&#xff0c;进行详细的记录&#x…

百度站长平台的正确使用方式,seoer必备技能!

seo技术指标&#xff1a;如何查看网站的变化利用百度站长平台最为准确&#xff0c;都知道百度自己的产品&#xff0c;当然统计出来的数据也是最为准确的。第一&#xff1a;把网站添加到百度站长平台中去&#xff1a; 搜索资源平台--站点管理 点开站点管理&#xff0c;添加自己的…

家乡网站的设计与实现_博客网站的设计与实现(工具篇)

一、系统的设计目标目标&#xff1a;能够注册用户&#xff0c;用户可以创建自己的博客&#xff0c;而且用户间可以互动。二、开发工具及安装配置MyEclipse,Navicat for MySQL1.1 MyEclipse1、简介&#xff1a;MyEclipse是在eclipse 基础上加上自己的插件开发而成的功能强大的企…

小白在阿里云云服务器上如何发布自己的网站(建站|详细)...

昨天发的小白在阿里云云服务器上如何发布自己的网站&#xff08;建站|详细&#xff09;&#xff0c;今更新一下 一、选购云服务器 到阿里云官网进行选购1.1 使用学生优惠购买使用学生优惠后为118元/年1.2 市场价购买如果是没有学生优惠的话&#xff0c;请用市场价购买 阿里云还…

网站高可用架构--一

网站的可用性&#xff08;Availability&#xff09;描述网站可有效访问的特征。 网站可用性的度量与考核网站可用性度量2.网站可用性考核 可用性指标是网站架构设计的重要指标。从管理层面&#xff0c;可用性指标是网站或者产品的整体考核指标&#xff0c;具体到每个工程师的考…