Django分页、Ajax
Django分页、Ajax
一、Django的分页:
分页是为了减少一次性从数据库读过多的数据。
先说一下offset和limit。
语句1:select * from student limit 9,4
语句2:slect * from student limit 4 offset 9
这两条语句的查询结果是一样的。同样可以完成分页的功能。
1、Django内置分页:
from django.core.paginator import EmptyPage,PageNotAnInteger,Paginator
def index(request):
current_page = request.GET.get("current_page")
if current_page == None:
current_page = 1
paginator = Paginator(slist, 10) # slist是数据,10代表每一页的显示多少条
# 这个page对象包含了,是否具有上一页,是否有下一页
page = paginator.page(current_page) # 在这里做异常判断,如果用户输入不合法就报异常
return render(request, "index.html", {"slist": page, "current_page": current_page})
前端页面:
# 循环打印数据
{% for row in slist.object_list %} # 已经分好页的数据
{{ row.name }}
{% endfor %}
# 判断是否有上一页
{% if slist.has_previous %}
# 上一页的页码
上一页
{% endif %}
总页数{{ slist.paginator.num_pages }}, 当前页:{{ slist.number }}
# 判断是否有下一页
{% if slist.has_next %}
# 下一页的页码
下一页
{% endif %}
两个重要的对象: Paginator 和 page对象。
Paginator:
per_page: 每页显示记录数量
count: 数据总个数
num_pages: 总页数
page_range: 总页数的索引范围,如: (1,10),(1,200)
page: page对象 page(2) 代表第二页数据的对象
page:
has_next 是否有下一页
next_page_number 下一页页码
has_previous 是否有上一页
previous_page_number 上一页页码
object_list 分页之后的当前页数据列表
number 当前页
paginator paginator对象,父类对象
※:可以建一个模板,每次分页都include,提高代码的可重用性。至此Django的内置分页已做好,并没有什么样式,下面开始自定制。
2、扩展Dajngo的内置分页:
通过继承Paginator的方式进行自定义类的方式进行分页。
def index(request):
current_page = request.GET.get("current_page")
if current_page == None:
current_page = 1
# 参数:当前页、页码最大显示、数据列表、每页多少数据
paginator = CustomPaginator(current_page, 5, slist, 10)
page = paginator.page(current_page) # 在这里应该做异常判断,如果用户输入不合法就报异常
return render(request, "index.html", {"slist": page, "current_page": current_page})
class CustomPaginator(Paginator):
# 初始化调用父类的方法
def __init__(self, current_page, per_num, *args, **kwargs):
self.current_page = int(current_page)
self.per_page = per_num
super().__init__(*args, **kwargs)
# 自己定义一个方法进行页码的显示
def getNum(self):
self.part = self.per_page//2
# 当前页码数小于总页数
if self.num_pages < self.per_page:
return range(1,self.num_pages+1)
# 当前页小于显示页码的一半时
if self.current_page <= self.part:
return range(1, self.per_page+1)
# 当当前页加上显示的页码一半大于总页数时
if (self.current_page+self.part) > self.num_pages:
return range(self.num_pages-self.per_page+1,self.num_pages+1)
# 当前页大于显示页码的一半时
if self.current_page > self.part:
return range(self.current_page-self.part, self.current_page+self.part+1)
前端页面:
# 进行数据的遍历
{% for row in slist.object_list %}
{{ row.name }}
{% endfor %}
# 进行页码遍历
{% if slist.has_previous %}
上一页
{% endif %}
{% for item in slist.paginator.getNum %}
{% if item == slist.number %}
{{ item }}
{% else %}
{{ item}}
{% endif %}
{% endfor %}
{% if slist.has_next %}
下一页
{% endif %}
3、自定义分页:
通过自己写分页的类。
class Paginator(object):
# 参数: 每页的记录数、当前页码、显示最大页码数、总数据条数
def __init__(self, per_count_page, current_page, per_index_page, total_count):
self.per_count_page = per_count_page
self.current_page = int(current_page)
self.per_index_page = per_index_page
self.total_count = total_count
self.mid = self.per_index_page//2
# 开始页数
def start(self):
return (self.current_page - 1) * self.per_count_page
# 结束页数
def end(self):
return self.current_page * self.per_count_page
# 计算总页数
@property
def page_num(self):
self.a, b = divmod(self.total_count, self.per_count_page)
if b != 0:
return self.a+1 # 在这里最好直接返回一个值,而不是当前的形式
else:
return self.a
# 计算页码显示样式
def getNum(self): # self.part = self.per_page//2
# 当前页码数小于总页数
if self.page_num < self.per_index_page:
return range(1, self.page_num+1)
if self.current_page <= self.mid:
return range(1, self.per_index_page+1)
if (self.current_page+self.mid) > self.page_num:
return range(self.page_num-self.per_index_page+1,self.page_num+1)
if self.current_page > self.mid:
return range(self.current_page-self.mid, self.current_page+self.mid+1)
# 将每个a标签放入,列表中,前端页面不用再循环显示
def page_indexs(self):
index_list = []
first = '首页 '
index_list.append(first)
if self.current_page-1:
top = '上一页 '
index_list.append(top)
for i in self.getNum():
# 寻找当前页
if self.current_page == i:
temp = ''+str(i)+' '
else:
temp = ''+str(i)+' '
index_list.append(temp)
if self.current_page != (self.a+1):
bottom = '下一页 '
index_list.append(bottom)
last = '尾页 '
index_list.append(last)
return "".join(index_list) # 转换成字符串
前端页面:
# 进行数据遍历
{% for row in data %}
{{ row.name}}
{% endfor %}
# 后台遍历好了,直接显示
{{ pages|safe }}
更多内容详见:https://docs.djangoproject.com/en/2.2/topics/pagination/
二、Ajax部分
1、概述:Ajax 的全称是Asynchronous JavaScript and XML(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。是一种用于创建快速动态网页的技术,是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
2、基本原理
3、$.ajax 的一般格式
$.ajax({
url:“路径”,
data:{key1:value1}, // value1可以是数组类型,但不能是字典类型,如果非要传字典类型就把字典传成字符串
type:'POST/GET', //数据的提交方式:get和post
dataType:’json’, // 数据的返回值类型,当返回的数据类型和dataType定义不一样时,不会触发success函数。
traditional:True,
success:function(str){ //成功回调函数,str就是后台传送回来的信息。在回调函数中无法用$(this) 会无法定位到准确位置
},
error:function (err){ //失败回调函数
}
});
dataType 的一些参数值:
当dataType:"json"时,会自动解析json字符串。
当dataType:"text"时,不会进行任何处理。默认就是text。
当dataType:"xml"时,会自动转化为xml。
dataType也可以是html
一些其他的属性:
var data = $("表单的id").serialize() // serialize()方法会自动提交表单的属性到data下。
后台接收到的数据:
Ajax传数组数据时:data:{slist:[1,2,3,4,5]} 后台收到的是 ,这样是不符合常理的。
当设置traditional:true。后台接收到的数据
比较Ajax和跳转新页面:
新url的方式进行修改: 好处是 独立的页面,数据量大、或者条目多的时候适合用。当用户输入错误时应该保留用户输入的正确字段。 Ajax方式进行修改:数据量小、或者条目少的时候适合用。是否刷新?一般刷新,除非性能要求。要考虑当前页码和自定义属性。
原生的Ajax:
为了解决手机app调用Ajax的问题,所以用原生的Ajax。
GET请求:
var xhr = new XMLhttprequest() // 创建一个对象
xhr.open("GET","") // open方法的两个参数 请求的方式,路径
xhr.onreadystatechange = function(){ // 回调函数
if(xhr.readyState==4){ // 当readyState返回值为4时表示成功
console.log("接收成功")
}
}
xhr.send(null) // 发送数据
POST请求:
var xhr = new XMLhttprequest() // 创建一个对象
xhr.open("POST","") // open方法的两个参数 请求的方式,路径
xhr.onreadystatechange = function(){ // 回调函数
if(xhr.readyState==4){ // 当readyState返回值为4时表示成功
console.log("接收成功")
}
}
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset-UTF-8") // 需要设置请求头否则django不认识
xhr.send("name=default") // 发送数据
伪Ajax请求:
通过iframe的无刷新返回数据的特性,并且能很好的解决兼容性的问题,所以有时候通过伪Ajax请求的方式。
首先在form标签加上target属性,target的值是iframe的name属性的值。
还需要为iframe标签绑定onload属性,不过不直接写在标签上,而是当点击提交以后通过 js 进行绑定。onload属性相当于回调函数。
document.getElementById("iframe").onload = reloading;
处理iframe的返回值:拿到后台返回的值
原生的js方式:
document.getElementById("iframe").contentWindow.document.body.innerHTML
jQuery的方式:
$("#iframe").contents().find("body").html()
Ajax文件上传:
我们可以为上传按钮进行onchange函数的定义;
// 当选中文件以后自动上传
原生Ajax:
var data = new Formdata(); // 通过Formdata的方式进行上传
data.append("img", document.getElementById("load").files[0]) // 获取文件标签的内容
var xhr = new XMLHttpRequest();
xhr.open("post","/upload");
xhr.onreadystatechange() = function(){
if(xhr.readystate == 4){
console.log(xhr.responseText)
}
}
xhr.send(data); // 在这里直接进行发送
jQuery:
var data = new Formdata();
data.append("img", $("#load")[0].files[0])
$.ajax({
url:"/upload",
type:"POST",
data:data,
success:function(arg){
console.log(arg)
}
processData: false, // 告诉jQuery不要去处理发送的数据, 发送对象。
contentType: false, // 告诉jQuery不要去设置Content-Type请求头
})
iframe的形式上传文件:
HTML:
-------------------------------------------------------------------------
js:
function upload() {
document.getElementById("if").onload = show;
document.getElementById("form_data").submit()
}
function show() {
var x=this.contentWindow.document.body.innerHTM;
document.getElementById("up").innerHTML = " "
}
跨域Ajax请求:
由于浏览器有同源策略的限制,所以无法正常接收其他服务器的响应信息。所以通过src属性进行跨域访问。我们通过jsonp的方式进行苦于的访问。以jsonp的形式进行跨域访问,只能以GET的方式进行。
原生js:
js部分
function show1(){
var img = document.createElement("script"); // 创建一个script标签
img.src = " http://127.0.0.1:8080/outer"; // 设置请求路径
document.head.appendChild(img); // 在头内添加信息
document.head.removeChild(img); // 拿到数据就删除
}
function fuck(msg) {
console.log(msg)
}
-------------------------------------------------------------------
views
def outer(request):
return HttpResponse("fuck('外界的响应')") // 返回一个函数名包裹信息,实际上返回的是函数
jQuery:
js部分
function show1(){
$.ajax({
url:" http://127.0.0.1:8080/outer",
type:"get",
success:function (msg) {
console.log(msg)
},
dataType:"jsonp", // 当类型是jsonp的形式时,会自动生成标签等
jsonp:"callback", // 设置参数名
jsonpcallback:"fuck", // 设置回调函数
})
}
function fuck(msg) {
console.log(msg)
}
-------------------------------------------------------------------
views
def outer(request):
name = request.GET.get("callback") // 获取参数值
return HttpResponse(name+"('外界的响应')") // 返回一个函数名包裹信息
跨站资源共享(core):
通过设置头信息,让浏览器不再限制信息的返回,core的方式既可以GET请求也可以用POST请求
function show1(){
$.ajax({
url:"http://127.0.0.1:8080/outer/",
type:"get",
success:function (msg) {
$("#content").text(msg);
}
})
}
-----------------------------------------------
views视图函数:
你可能感兴趣的:(Django,Python)
使用 Python 的`turtle`库来实现 2025 新年快乐的程序
go5463158465
算法 python python 开发语言
以下是一个使用Python的turtle库来实现2025新年快乐的程序,其中包含烟花效果和祝福语:importturtleimportrandom#设置画布和画笔screen=turtle.Screen()screen.setup(width=800,height=600)screen.bgcolor("black")screen.title("2025新年快乐!")#定义烟花类classFire
二叉树深度的介绍
go5463158465
python 算法 算法 开发语言 python
二叉树深度的定义:二叉树的深度(高度)是指从根节点到最远叶子节点的最长路径上的节点数。例如,一个只有根节点的二叉树,其深度为1;如果根节点有两个子节点,且每个子节点又分别有两个子节点,那么这个二叉树的深度为3。计算二叉树深度的方法:递归方法:递归是解决二叉树问题的常用方法。对于二叉树深度的计算,其递归的思想是:二叉树的深度等于其左子树和右子树深度的最大值加1。以下是使用Python实现的代码:cl
2025最新实测可用的免费股票API接口推荐:python、JavaScript 、JAVA等实例代码演示教你如何免费获取股票实时、历史、指标等数据
Eumenides_max
python javascript java 股票数据接口 股票API接口
在数字化时代,股票投资已不再局限于传统的交易方式。随着金融科技的飞速发展,API(应用程序编程接口)接口正逐渐成为股票交易领域的新宠,为投资者提供了更加便捷、高效的交易体验。API接口在股票交易中的应用,主要体现在其能够实现数据的实时传输和交互。通过API接口,投资者可以实时获取市场动态、股票价格、交易量等关键信息,为决策提供有力支持。同时,API接口还支持自动化交易,投资者可以根据预设的交易策略
Python 魔法学院 - 第03篇:Python 变量与数据类型 ⭐
码力全開
《Python 魔法学院》 python 开发语言 windows pycharm
目录1.引言:开启Python变量与数据类型的魔法之旅2.变量:数据的魔法标签️2.1什么是变量?2.2变量的命名规则3.数据类型:Python的魔法工具箱3.1数据类型示例3.2数据类型的内存结构内存结构模拟4.Python中的关键字和保留字5.Python可变类型及其方法详解️5.1列表(List)5.1.1列表的创建5.1.2列表的常用方法5.1.3列表方法的使用示例及内存模拟5.2集合(S
Python 实现2048
yingjiejk
python python pygame 开发语言
2048游戏是一个经典的数字益智游戏,使用Python语言可以很容易地实现它。以下是一个简单的代码示例:importpygameimportrandompygame.init()#设置颜色WHITE=(255,255,255)BLACK=(0,0,0)GRAY=(128,128,128)RED=(255,0,0)GREEN=(0,255,0)BLUE=(0,0,255)#设置屏幕大小size=(4
python 中serial.read用法详解之serial.read(inwaiting or 1)
huiyuanzhenduo
python
在Python中,serial.read(inwaitingor1)是pyserial库中用于从串口读取数据的代码片段,下面是详细解释:read()serial类的方法,用于从串口缓冲区读取指定数量的字节数据。格式为read(size),size为读取的字节数。inwaiting是serial类的属性,返回串口输入缓冲区中等待读取的字节数。如ser.inwaiting()可获取当前缓冲区字节数。i
通达信实时行情API的功能有哪些?如何利用这些功能进行股票分析
股票程序化交易接口
量化交易 股票API接口 Python股票量化交易 通达信 实时行情api 股票分析 行情数据 股票量化接口 股票API接口
Python股票接口实现查询账户,提交订单,自动交易(1)Python股票程序交易接口查账,提交订单,自动交易(2)股票量化,Python炒股,CSDN交流社区>>>行情数据获取功能通达信实时行情API能够提供全面的行情数据。它可以获取股票的基本信息,如股票代码、名称等。能精确提供股票的实时价格,包括当前价、开盘价、收盘价等重要价格数据。这些数据是进行股票分析的基础。投资者可以根据当前价与开盘价的
Python项目之Pygame制作新年烟花!
WANGWUSAN66
pygame python 开发语言 计算机 经验分享 源码
实现源码涉及到两个Python库:random和pygame。1.random库:randint(a,b):返回一个在[a,b]范围内的随机整数。uniform(a,b):返回一个在[a,b]范围内的随机浮点数。choice(sequence):从给定的序列中随机选择一个元素。2.Pygame是一个用于制作游戏的Python模块,它包含了许多用于游戏开发和图形渲染的功能。以下是Pygame的一些主
python爬虫框架Scrapy简介
码农~明哥
python python 爬虫 scrapy
当你写了很多个爬虫程序之后,你会发现每次写爬虫程序时,都需要将页面获取、页面解析、爬虫调度、异常处理、反爬应对这些代码从头至尾实现一遍,这里面有很多工作其实都是简单乏味的重复劳动。那么,有没有什么办法可以提升我们编写爬虫代码的效率呢?答案是肯定的,那就是利用爬虫框架,而在所有的爬虫框架中,Scrapy应该是最流行、最强大的框架。Scrapy概述Scrapy是基于Python的一个非常流行的网络爬虫
【算法】经典博弈论问题——斐波那契博弈 + Zeckendorf 定理 python
查理零世
算法 python 数据结构
目录斐波那契博弈(FibonacciNim)齐肯多夫(Zeckendorf)定理示例分析实战演练斐波那契博弈(FibonacciNim)先说结论:当初始石子数目n是斐波那契数时,先手必败;否则,先手有策略获胜。证明概要:当n=2时,先手只能取1颗石子,后手直接取剩下的1颗石子获胜,因此先手必败。假设对于所有小于等于某个斐波那契数f[k]的情况,结论都成立。归纳:对于f[k+1]=f[k]+f[k-
用 Python 实现经典的 2048 游戏:一步步带你打造属于你的小游戏!
一位小说男主
python python 游戏
用Python实现经典的2048游戏:一步步带你打造属于你的小游戏!(结尾附完整代码)简介2048是一个简单而又令人上瘾的数字拼图游戏。玩家通过滑动方块使相同数字的方块合并,目标是创造出数字2048!在这篇博客中,我们将用Python的Tkinter库从零开始实现这款游戏,涵盖从界面设计到逻辑实现的每一个细节,帮助你全面了解背后的开发思路。游戏特点经典玩法:滑动合并相同数字,尽可能达到2048。随
Python跨年烟花代码
花洵琴
Python跨年烟花代码【下载地址】Python跨年烟花代码分享本资源文件提供了一个使用Python编写的跨年烟花代码,代码中使用了`pygame`、`random`和`math`库来实现烟花的模拟效果。代码中定义了三个类:`Firework`、`Particle`和`Trail`,分别代表烟花、烟花中的颗粒以及颗粒的轨迹点项目地址:https://gitcode.com/open-source-
Python web框架——Django
xiabe
python python django web开发
简介django是一个免费的开源的pythonweb框架。它遵循了model-view-template(MVT)的架构模式。由DjangoSoftwareFoundation维护,一个以501©(3)非营利组织形式成立的独立组织。django的主要目标是简单的去开发一个复杂的数据库驱动的网站。该框架强调组件的可重用性和“可插拔性”、代码更少、低耦合、快速开发以及“不要重复自己”的原则。Pytho
python 建立并使用 venv
波格斯特
问题备忘 python 开发语言
python建立并使用venv[smf@5GC-10mmlShell]$python3-mvenv./.venv[smf@5GC-10mmlShell]$source./.venv/bin/activate(.venv)[smf@5GC-10mmlShell]$(.venv)[smf@5GC-10mmlShell]$(.venv)[smf@5GC-10mmlShell]$pip3installre
Tensorflow入门——训练结果的保存与加载
weixin_34087301
人工智能 python 数据库
2019独角兽企业重金招聘Python工程师标准>>>训练完成以后我们就可以直接使用训练好的模板进行预测了但是每次在预测之前都要进行训练,不是一个常规操作,毕竟有些复杂的模型需要训练好几天甚至更久所以将训练好的模型进行保存,当有需要的时候重新加载这个模型进行预测或者继续训练,这才是一个常规操作我们依然使用最简单的例子进行说明,这里沿用Tensorflow入门——实现最简单的线性回归模型的预测这个例
【Python学习】网络爬虫-获取京东商品评论并制作柱状图
西攻城狮北
Python实用案例 学习 python 爬虫 京东 评论 柱状图
一、实现目标获取京东网站上商品的评论统计数据,并使用该数据制作了一个简单的柱状图。二、实现步骤2.1网页分析首先打开链接https://www.jd.com/。在搜索框中输入巧克力关键词后,点击第一件商品打开商品网页,找到商品评价,在商品评价模块能够看到用户选择的评论标签。由于该商品的全部用户评论有50万+,数据量较大。我们需要收集商品特点,所以我们选择对评价标签进行分析。打开https://it
python弹窗(tkinter库):在弹窗中放置图片的两种方法
独白不白
python 开发语言
我了解到的方法有两种,但无一例外,重点都是将图片转化成PhotoImage的形式,然后才能在弹窗中显示。相当于PhotoImage是tkinter库导出图片的专属格式。方法1基础写法:首先把gif格式的图片转化成PhotoImage形式,再利用Label导出。importtkinterastkroot=tk.Tk()a=tk.Frame(root)a.pack()b=tk.PhotoImage(f
爬虫实战--- (6)链家房源数据爬取与分析可视化
rain雨雨编程
爬虫实战系列 python 爬虫 数据分析
文章持续跟新,可以微信搜一搜公众号[rain雨雨编程],第一时间阅读,涉及数据分析,机器学习,Java编程,爬虫,实战项目等。目录前言1.爬取目标2.所涉及知识点3.步骤分析(穿插代码讲解)步骤一:发送请求步骤二:获取数据步骤三:解析数据步骤四:保存数据4.爬取结果5.完整代码6数据可视化前言今天我将为大家分享一个非常实用的Python项目——链家房源数据的爬取与分析可视化。在这篇文章中,我们将分
Python 项目国际化:使用 Babel 实现多语言支持
衫水
python进阶 python
文章目录如何使用Babel实现Python项目国际化1.安装Babel2.设置项目目录结构3.标记可翻译的文本4.提取可翻译的文本生成文件——生成pot文件4.1有配置文件方式(使用`babel.cfg`)4.1.1.创建`babel.cfg`文件4.1.2.提取翻译内容4.2无配置文件方式(直接指定文件路径)5.后续步骤(通用步骤)5.1.初始化翻译文件——生成po文件5.2.编辑po文件5.3
python创建虚拟环境
k47
python python linux 开发语言
python创建虚拟环境准备工作python3.8.8(python3.3以上自带venv模块)环境windows10步骤在D盘创建文件夹Env进入Env文件夹执行命令:python-mvenvtest_env(这里名称自己填)进入上一步创建的文件夹内,并进入scripts文件夹下执行命令进入虚拟环境:.\activatecmd命令窗口前面出现(你自己写的名称)就成功了退出虚拟环境deactiva
查找地理处理工具
pianmian1
arcgis
操作方法:1.在arcmap中打开目标地图2.单机Geoprocessing菜单,选择SearchForTools,打开Search窗口3.在搜索文本框中输入Clip,当开始输入这个单词时,搜索文本框会根据用户输入的字母自动匹配搜索结果4.单机Search按钮,即可生成一个匹配的工具列表.在搜索结果中,锤子图标表示工具,卷轴图标表示python脚本,含有彩色方格的表示模型5.选择Clip工具,将打
关于python语言程序设计课本的总结
pianmian1
python 开发语言
不知不觉就学完了整本书.今天来总结一下内容吧.目录第一章:程序设计基本方法;第二章:python语言基本语法元素第三章:基本数据类型第四章:程序的控制结构第五章:函数和代码复用第一章:程序设计基本方法;本章讲述了程序设计的基本语言概述与python语言特点.讲述了如何正确安装python程序.介绍了python语言的优点:语法简介,生态丰富,多语言集成,平台无关,强制可读,支持中文,模式多样等.并
ArcGis批量导出地图
杨汶达@
ArcGis arcgis
ArcGIS软件从诞生之日起就引领着地理信息系统技术的潮流,极大地提高了制图的质量和效率,目前可以满足大多数用户的需求。但是在具有部分行业特色或存在大量重复工作的应用需求中,仅凭ArcGIS软件来完成制图工作不仅费时费力,而且工作量可能超过了可承受范围。因此,通过编程来实现自动化制图技术,则可以起到事半功倍的效果。以林地征占用项目使用林地现状图制图为例,介绍如何使用Python编写代码,利用Arc
python3+TensorFlow 2.x(四)反向传播
刀客123
python学习 tensorflow 人工智能 python
目录反向传播算法反向传播算法基本步骤:反向中的参数变化总结反向传播算法反向传播算法(Backpropagation)是训练人工神经网络时使用的一个重要算法,它是通过计算梯度并优化神经网络的权重来最小化误差。反向传播算法的核心是基于链式法则的梯度下降优化方法,通过计算误差对每个权重的偏导数来更新网络中的参数。反向传播算法基本步骤:前向传播:将输入数据传递通过神经网络的各层,计算每一层的输出。计算损失
Python pdf转word
树上灵溪
python
最新在翻译英文文档,但都是pdf的,有点不方便,花了点时间做了一个小工具,分享一下,希望对大家有所帮助。这里录了一个视频传到B站了,比较详细可以看一下:传送门。最终结果是生成了一个可执行文件,可以批量转换文件夹中的pdf文件,包含图片和简单的格式转换(复杂的就不用考虑自己搞了QAQ)下面简单描述一下大概思路:1.引用pdf2docx库:frompdf2docximportConverter2.找到
Python SQLAlchemy库详解
寒秋丶
Python python 开发语言 数据库 测试开发 软件测试 软件开发 自动化测试
大家好,在Python生态系统中,SQLAlchemy库是一个强大的工具,为开发人员提供了便捷的方式来处理与数据库的交互。无论是开发一个小型的Web应用程序,还是构建一个大型的企业级系统,SQLAlchemy都能满足你的需求,并提供灵活性和性能上的优势。本文将带你深入探索SQLAlchemy库,从基础概念到高级用法,让你对其有一个全面的了解。一、介绍SQLAlchemy是Python中一个强大的开
三种国产大语言模型Python免费调用
小软件大世界
python 人工智能
基础三大模型,需要先去官方注册获得key;后续可以使用下列代码调用1.腾讯安装:pip install -i https://mirrors.tencent.com/pypi/simple/ --upgrade tencentcloud-sdk-python实例:importjsonimporttypesfromtencentcloud.commonimportcredentialfromtenc
Flask教程5:flask数据库SQLAlchemy
Cachel wood
Flask入门教程 数据库 flask oracle python 阿里云 开发语言 LLM
文章目录SQLAlchemy为什么使用ORM初始化数据库配置表模型的定义与数据库映射数据的增、删、改、查操作数据的添加数据的查找数据的修改数据的删除init_app作用详解SQLAlchemySQLAlchemy是一个基于Python实现的ORM(ObjectRelationalMapping,对象关系映射)框架。该框架建立在DBAPI(数据库应用程序接口系统)之上,使用关系对象映射进行数据库操作
python对word文档与PDF的操作
深海里的盐汽水
python
python操作word文档与PDF对word文档的操作在操作前需要安装第三方库pipinstallpython-docxpillow。用python创建一个word文档创建一个对象添加一个大标题添加段落保存文件fromdocximportDocumentfromdocx.sharedimportInchesfromdocx.documentimportDocumentasDoc#创建一个对象do
<Python><ffmpeg>基于python使用PyQt5构建GUI实例:音频格式转换程序(MP3/aac/wma/flac)(优化版2)
机构师
python编程实例 python ffmpeg qt pyqt5 vscode
前言本文是基于python语言使用pyqt5来构建的GUI,功能是使用ffmpeg来对音频文件进行格式转换,如mp3、aac、wma、flac等音乐格式。UI示例:环境配置系统:windows平台:visualstudiocode语言:python库:pyqt5、ffmpeg概述本文是建立在之前的博文的基础上的优化版,前文链接:1、python使用ffmpeg来制作音频格式转换工具(优化版)2、利
[黑洞与暗粒子]没有光的世界
comsci
无论是相对论还是其它现代物理学,都显然有个缺陷,那就是必须有光才能够计算
但是,我相信,在我们的世界和宇宙平面中,肯定存在没有光的世界....
那么,在没有光的世界,光子和其它粒子的规律无法被应用和考察,那么以光速为核心的
&nbs
jQuery Lazy Load 图片延迟加载
aijuans
jquery
基于 jQuery 的图片延迟加载插件,在用户滚动页面到图片之后才进行加载。
对于有较多的图片的网页,使用图片延迟加载,能有效的提高页面加载速度。
版本:
jQuery v1.4.4+
jQuery Lazy Load v1.7.2
注意事项:
需要真正实现图片延迟加载,必须将真实图片地址写在 data-original 属性中。若 src
使用Jodd的优点
Kai_Ge
jodd
1. 简化和统一 controller ,抛弃 extends SimpleFormController ,统一使用 implements Controller 的方式。
2. 简化 JSP 页面的 bind, 不需要一个字段一个字段的绑定。
3. 对 bean 没有任何要求,可以使用任意的 bean 做为 formBean。
使用方法简介
jpa Query转hibernate Query
120153216
Hibernate
public List<Map> getMapList(String hql,
Map map) {
org.hibernate.Query jpaQuery = entityManager.createQuery(hql);
if (null != map) {
for (String parameter : map.keySet()) {
jp
Django_Python3添加MySQL/MariaDB支持
2002wmj
mariaDB
现状
首先,
[email protected] 中默认的引擎为 django.db.backends.mysql 。但是在Python3中如果这样写的话,会发现 django.db.backends.mysql 依赖 MySQLdb[5] ,而 MySQLdb 又不兼容 Python3 于是要找一种新的方式来继续使用MySQL。 MySQL官方的方案
首先据MySQL文档[3]说,自从MySQL
在SQLSERVER中查找消耗IO最多的SQL
357029540
SQL Server
返回做IO数目最多的50条语句以及它们的执行计划。
select top 50
(total_logical_reads/execution_count) as avg_logical_reads,
(total_logical_writes/execution_count) as avg_logical_writes,
(tot
spring UnChecked 异常 官方定义!
7454103
spring
如果你接触过spring的 事物管理!那么你必须明白 spring的 非捕获异常! 即 unchecked 异常! 因为 spring 默认这类异常事物自动回滚!!
public static boolean isCheckedException(Throwable ex)
{
return !(ex instanceof RuntimeExcep
mongoDB 入门指南、示例
adminjun
java mongodb 操作
一、准备工作
1、 下载mongoDB
下载地址:http://www.mongodb.org/downloads
选择合适你的版本
相关文档:http://www.mongodb.org/display/DOCS/Tutorial
2、 安装mongoDB
A、 不解压模式:
将下载下来的mongoDB-xxx.zip打开,找到bin目录,运行mongod.exe就可以启动服务,默
CUDA 5 Release Candidate Now Available
aijuans
CUDA
The CUDA 5 Release Candidate is now available at http://developer.nvidia.com/<wbr></wbr>cuda/cuda-pre-production. Now applicable to a broader set of algorithms, CUDA 5 has advanced fe
Essential Studio for WinRT网格控件测评
Axiba
JavaScript html5
Essential Studio for WinRT界面控件包含了商业平板应用程序开发中所需的所有控件,如市场上运行速度最快的grid 和chart、地图、RDL报表查看器、丰富的文本查看器及图表等等。同时,该控件还包含了一组独特的库,用于从WinRT应用程序中生成Excel、Word以及PDF格式的文件。此文将对其另外一个强大的控件——网格控件进行专门的测评详述。
网格控件功能
1、
java 获取windows系统安装的证书或证书链
bewithme
windows
有时需要获取windows系统安装的证书或证书链,比如说你要通过证书来创建java的密钥库 。
有关证书链的解释可以查看此处 。
public static void main(String[] args) {
SunMSCAPI providerMSCAPI = new SunMSCAPI();
S
NoSQL数据库之Redis数据库管理(set类型和zset类型)
bijian1013
redis 数据库 NoSQL
4.sets类型
Set是集合,它是string类型的无序集合。set是通过hash table实现的,添加、删除和查找的复杂度都是O(1)。对集合我们可以取并集、交集、差集。通过这些操作我们可以实现sns中的好友推荐和blog的tag功能。
sadd:向名称为key的set中添加元
异常捕获何时用Exception,何时用Throwable
bingyingao
用Exception的情况
try {
//可能发生空指针、数组溢出等异常
} catch (Exception e) {
 
【Kafka四】Kakfa伪分布式安装
bit1129
kafka
在http://bit1129.iteye.com/blog/2174791一文中,实现了单Kafka服务器的安装,在Kafka中,每个Kafka服务器称为一个broker。本文简单介绍下,在单机环境下Kafka的伪分布式安装和测试验证 1. 安装步骤
Kafka伪分布式安装的思路跟Zookeeper的伪分布式安装思路完全一样,不过比Zookeeper稍微简单些(不
Project Euler
bookjovi
haskell
Project Euler是个数学问题求解网站,网站设计的很有意思,有很多problem,在未提交正确答案前不能查看problem的overview,也不能查看关于problem的discussion thread,只能看到现在problem已经被多少人解决了,人数越多往往代表问题越容易。
看看problem 1吧:
Add all the natural num
Java-Collections Framework学习与总结-ArrayDeque
BrokenDreams
Collections
表、栈和队列是三种基本的数据结构,前面总结的ArrayList和LinkedList可以作为任意一种数据结构来使用,当然由于实现方式的不同,操作的效率也会不同。
这篇要看一下java.util.ArrayDeque。从命名上看
读《研磨设计模式》-代码笔记-装饰模式-Decorator
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.Fi
Maven学习(一)
chenyu19891124
Maven私服
学习一门技术和工具总得花费一段时间,5月底6月初自己学习了一些工具,maven+Hudson+nexus的搭建,对于maven以前只是听说,顺便再自己的电脑上搭建了一个maven环境,但是完全不了解maven这一强大的构建工具,还有ant也是一个构建工具,但ant就没有maven那么的简单方便,其实简单点说maven是一个运用命令行就能完成构建,测试,打包,发布一系列功
[原创]JWFD工作流引擎设计----节点匹配搜索算法(用于初步解决条件异步汇聚问题) 补充
comsci
算法 工作 PHP 搜索引擎 嵌入式
本文主要介绍在JWFD工作流引擎设计中遇到的一个实际问题的解决方案,请参考我的博文"带条件选择的并行汇聚路由问题"中图例A2描述的情况(http://comsci.iteye.com/blog/339756),我现在把我对图例A2的一个解决方案公布出来,请大家多指点
节点匹配搜索算法(用于解决标准对称流程图条件汇聚点运行控制参数的算法)
需要解决的问题:已知分支
Linux中用shell获取昨天、明天或多天前的日期
daizj
linux shell 上几年 昨天 获取上几个月
在Linux中可以通过date命令获取昨天、明天、上个月、下个月、上一年和下一年
# 获取昨天
date -d 'yesterday' # 或 date -d 'last day'
# 获取明天
date -d 'tomorrow' # 或 date -d 'next day'
# 获取上个月
date -d 'last month'
#
我所理解的云计算
dongwei_6688
云计算
在刚开始接触到一个概念时,人们往往都会去探寻这个概念的含义,以达到对其有一个感性的认知,在Wikipedia上关于“云计算”是这么定义的,它说:
Cloud computing is a phrase used to describe a variety of computing co
YII CMenu配置
dcj3sjt126com
yii
Adding id and class names to CMenu
We use the id and htmlOptions to accomplish this. Watch.
//in your view
$this->widget('zii.widgets.CMenu', array(
'id'=>'myMenu',
'items'=>$this-&g
设计模式之静态代理与动态代理
come_for_dream
设计模式
静态代理与动态代理
代理模式是java开发中用到的相对比较多的设计模式,其中的思想就是主业务和相关业务分离。所谓的代理设计就是指由一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理。比如我们在进行删除操作的时候需要检验一下用户是否登陆,我们可以删除看成主业务,而把检验用户是否登陆看成其相关业务
【转】理解Javascript 系列
gcc2ge
JavaScript
理解Javascript_13_执行模型详解
摘要: 在《理解Javascript_12_执行模型浅析》一文中,我们初步的了解了执行上下文与作用域的概念,那么这一篇将深入分析执行上下文的构建过程,了解执行上下文、函数对象、作用域三者之间的关系。函数执行环境简单的代码:当调用say方法时,第一步是创建其执行环境,在创建执行环境的过程中,会按照定义的先后顺序完成一系列操作:1.首先会创建一个
Subsets II
hcx2013
set
Given a collection of integers that might contain duplicates, nums, return all possible subsets.
Note:
Elements in a subset must be in non-descending order.
The solution set must not conta
Spring4.1新特性——Spring缓存框架增强
jinnianshilongnian
spring4
目录
Spring4.1新特性——综述
Spring4.1新特性——Spring核心部分及其他
Spring4.1新特性——Spring缓存框架增强
Spring4.1新特性——异步调用和事件机制的异常处理
Spring4.1新特性——数据库集成测试脚本初始化
Spring4.1新特性——Spring MVC增强
Spring4.1新特性——页面自动化测试框架Spring MVC T
shell嵌套expect执行命令
liyonghui160com
一直都想把expect的操作写到bash脚本里,这样就不用我再写两个脚本来执行了,搞了一下午终于有点小成就,给大家看看吧.
系统:centos 5.x
1.先安装expect
yum -y install expect
2.脚本内容:
cat auto_svn.sh
#!/bin/bash
Linux实用命令整理
pda158
linux
0. 基本命令 linux 基本命令整理
1. 压缩 解压 tar -zcvf a.tar.gz a #把a压缩成a.tar.gz tar -zxvf a.tar.gz #把a.tar.gz解压成a
2. vim小结 2.1 vim替换 :m,ns/word_1/word_2/gc  
独立开发人员通向成功的29个小贴士
shoothao
独立开发
概述:本文收集了关于独立开发人员通向成功需要注意的一些东西,对于具体的每个贴士的注解有兴趣的朋友可以查看下面标注的原文地址。
明白你从事独立开发的原因和目的。
保持坚持制定计划的好习惯。
万事开头难,第一份订单是关键。
培养多元化业务技能。
提供卓越的服务和品质。
谨小慎微。
营销是必备技能。
学会组织,有条理的工作才是最有效率的。
“独立
JAVA中堆栈和内存分配原理
uule
java
1、栈、堆
1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)3. 堆:存放所有new出来的对象。4. 静态域:存放静态成员(static定义的)5. 常量池:存放字符串常量和基本类型常量(public static f