python实战: 短链接生成器
python实战: 短链接生成器
项目结构:
error.html用于显示错误
index.html为主页
application.py为服务器
data.json用于保存短链接信息
参考https://blog.csdn.net/qq_36538012/article/details/82884360
error.html
<!DOCTYPE html>
<html lang="en">
<head><title>短链接生成器-错误</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"><script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script><script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script><link rel="shortcut icon" href="https://www.easyicon.net/api/resizeApi.php?id=1207033&size=128">
</head>
<body><div class="jumbotron text-center"><h1>短链接生成器</h1><p>短链接</p>
</div><div class="container"><h3>{{info}}</h3><br><a href="/index">回到主页</a>
</div></body>
</html>
index.html
<!DOCTYPE html>
<html lang="en">
<head><title>短链接生成器</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"><script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script><link rel="shortcut icon" href="https://www.easyicon.net/api/resizeApi.php?id=1207033&size=128">
</head>
<body><!-- 右键禁用 -->
<script>
function disableRightClick(e){if(!document.rightClickDisabled) // initialize{if(document.layers){document.captureEvents(Event.MOUSEDOWN);document.onmousedown = disableRightClick;}else document.oncontextmenu = disableRightClick;return document.rightClickDisabled = true;}if(document.layers || (document.getElementById && !document.all)){if (e.which==2||e.which==3){return false;}}else{return false;}}disableRightClick();
</script><div class="jumbotron text-center"><h1>短链接生成器</h1><p>短链接</p>
</div><!-- 禁用F12 -->
<script>/*document.oncontextmenu = function(){return false;}*/document.onkeydown=function (e){var currKey=0,evt=e||window.event;currKey=evt.keyCode||evt.which||evt.charCode;if (currKey == 123) {window.event.cancelBubble = true;window.event.returnValue = false;}}
</script><div class="container"><form action="/index" method="post"><div class="form-group"><label>请把你的长链接复制到这里:</label><input type="text" name="long" class="form-control"></div><button type="submit" class="btn btn-primary" name="okay">生成</button></form><!-- 显示短链接 -->{% if submit %}<h5>生成的短链接: </h5><a href="{{result}}" target="_blank">{{result}}</a>{% endif %}
</div>
application.py
import json
import flask
import random
import stringapp = flask.Flask(__name__)@app.route('/urls/<code>')
def redirect(code):with open('data.json', 'r', encoding='utf-8') as f:data = json.loads(f.read())url = data.get(code)if url:return flask.redirect(url)return flask.render_template('error.html', info='访问的短链接不存在!')@app.route('/index', methods=['GET', 'POST'])
def index():if flask.request.method == 'GET':return flask.render_template('index.html', submit=False, result='')else:chars = string.ascii_letters + string.digitswith open('data.json', 'r', encoding='utf-8') as f:data = json.loads(f.read())code = ''.join(random.sample(chars, 4))while code in data:code = ''.join(random.sample(chars, 4))short = f'localhost:65032/urls/{code}'long = flask.request.form.get('long')data[code] = longwith open('data.json', 'w', encoding='utf-8') as f:f.write(json.dumps(data))return flask.render_template('index.html', submit=True, result=short)app.run(host='localhost', port=65032, debug=True)
data.json
{}
python实战: 短链接生成器相关推荐
- java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串...
java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串 1 package com.zdz.test; ...
- 短链接生成器,adf.ly、shorte.st、ouo.io、adfoc.us哪个更好,有哪些区别
adf.ly.shorte.st.ouo.io.adfoc.us都属于短链接生成网站,且都是国外的网站 论速度来说adFoc.us个人体验是打开最快的,对国内比较友好,最慢的当属adf.ly,生成的短 ...
- 好用的短链接生成器,活码生成器
近年来,随着互联网的快速发展,越来越多的企业开始采用互联网运营推广模式.运营推广是指企业通过互联网平台进行产品和服务的宣传推广,帮助企业增加销量和提高品牌知名度. 运营推广有多种方式,包括网站推广.搜 ...
- 短域名生成java_腾讯短链接url生成接口/腾讯短网址在线生成/新浪微博短链接生成器的分享...
在通常情况下,URL是由系统生成的,通常包括URI路径,多个查询参数,可以对参数进行加密和解密. 当人们要分享某个URL,比如短信,邮件,社交媒体,这就需要短URL. 而短网址,顾名思义就是在长度上比 ...
- t.cn短链接生成 - 新浪短网址生成器压缩网址详细教程
t.cn短链接是新浪官方的短网址工具,提供在线将长链接缩短为最短形式的t.cn链接服务,生成的短网址跳转速度和访问兼容性没有任何影响,生成好的短网址永久有效,还可以通过对接调用api接口和批量生成的方 ...
- 百看不如一练, 247 个 Python 实战案例!
众所周知,我们在学习Pyhont过程中,大都看书枯燥.看视频进度慢,网上查找的学习案例又比较凌乱不成体系... 百看不如一练,今天为大家搜集了一份Python从入门到进阶的实战案例合集,共计247个案 ...
- 整理了200多个Python实战案例,都有完整且详细的教程
不管是学习什么语言,最终目的都是做项目.搜遍全网,整理了200多个Python实战的小项目,都有完整的代码,以及代码中用到的数据源等等.可以直接拿来用,也可以用于学习练手寻找思路. 告别枯燥,60秒学 ...
- 干货满满的 Python 实战项目,点赞收藏
作者 | 俊欣 来源 | 关于数据分析与可视化 今天小编来给大家介绍3个干货满满的计算机视觉方向的Python实战项目,主要用到的库有 opencv-python numpy pillow 要是大家所 ...
- python语言type board_菜鸟学Python,双手奉上老司机给上路新手总结的Python实战问题……...
针对Python这一话题每天后台都会有不少小伙伴提出问题,下面我就将这些问题进行汇整,产出"Python实战问题篇",我认为这些问题非常具有代表性,希望可以帮到大家. 第一类问题: ...
最新文章
- 深度学习进阶:多分类与TensorFlow
- MATLAB【九】————ICP算法实现
- 无需安装的CLI才是最好的
- opencv 计数后不动了 训练模型时_用OpenCV和深度学习进行年龄识别
- java面板如何设置大小_java面板调整大小问题
- c语言的变量,常量及作用域等
- ecshop商品列表页增加/显示货号SN
- keil5图标变成白色_图标设计全方位解读
- GB28181协议——布防和报警订阅
- oracle添加字段sql并添加注释
- 苹果开发者账号申请流程
- untiy下连接photon
- 大话云原生数据库中的存算分离
- Kafka消息积压案例分析
- c语言求幸运数字程序,算法题挑选幸运数字,该如何处理
- 单例设计模式(拉勾教育大数据学习笔记)
- 花生wifi后台管理系统项目日记
- 大公司的内部创业,寻求新的增长动能
- pydicom读取头文件_.dcm格式文件软件读取及python处理详解
- 数据挖掘之stacking模型融合(以阿里妈妈广告点击率预估比赛为例)