相关文章推荐
骑白马的蚂蚁  ·  excel中“已超出每日 Python ...·  3 周前    · 
迷茫的勺子  ·  Python 3.14.0 beta 4 ...·  3 周前    · 
暗恋学妹的消炎药  ·  南京信息工程大学主页平台管理系统 ...·  2 周前    · 
俊秀的冲锋衣  ·  Python链表实现·  8 小时前    · 
正直的键盘  ·  Python 有指针吗?_python中有没有指针·  8 小时前    · 
豁达的跑步鞋  ·  C#.Net Core控制台程序连接SQL ...·  10 月前    · 
非常酷的仙人掌  ·  内核该怎么学?Linux进程管理工作原理(代 ...·  1 年前    · 
性感的饼干  ·  Vue: 使用Vuex 保存 ...·  2 年前    · 
聪明伶俐的李子  ·  通用的Makefile源码解析 - 知乎·  2 年前    · 
Code  ›  python合并pdf、添加水印、实现web、URL转二维码
python django url 编程语言
https://blog.csdn.net/FuWen_Hao/article/details/135643554
犯傻的绿茶
1 年前
  • 前言
  • 一、python实现合并PDF
  • 二、python图片添加水印
  • 三、python实现web
    • 1.Django的安装
    • 2.创建项目
      • 2.1 通过终端创建
        • 1.打开终端
        • 2.进入某个目录(项目放在哪就去哪,最好不要出现中文,防止编码问题)
        • 3.执行命令来创建项目
      • 3.创建APP
      • 4.快速上手
        • 4.1 确保注册app
        • 4.2 URL和函数的映射
        • 4.3 视图函数的撰写
          • 4.3.1 render()使用
          • 4.3.2 模板路径问题
          • 4.3.3 静态文件static
          • 4.3.4 html文件编写
        • 4.4 运行Django
      • 四、python实现URL转二维码

      一些关于python的小实践

      一、python实现合并PDF

      import poimage
      from PyPDF2 import PdfReader, PdfWriter
      from tqdm import tqdm
      def merge2pdf(one_by_one, output):
          @Author & Date  : CoderWanFeng 2022/5/16 23:33
          @Desc  : merge_pdfs(paths=['开篇词.pdf', '中国元宇宙白皮书 (送审稿).pdf'], output='merge.pdf')
          pdf_writer = PdfWriter()
          for path in one_by_one:
              pdf_reader = PdfReader(path)
              # for page in tqdm(range(pdf_reader.getNumPages())):
              for page in simple_progress(range(len(pdf_reader.pages))):
                  # 把每张PDF页面加入到这个可读取对象中
                  # pdf_writer.addPage(pdf_reader.getPage(page))
                  pdf_writer.add_page(pdf_reader.pages[page])
          # 把这个已合并了的PDF文档存储起来
          with open(output, 'wb') as out:
              pdf_writer.write(out)
      def simple_progress(base, desc=None, log=True):
          if log and desc:
              return tqdm(iterable=base, desc=desc)
          elif log:
              return tqdm(iterable=base)
          else:
              return base
      if __name__ == '__main__':
      merge2pdf(one_by_one=[r'D:\test1.pdf', r'D:\test2.pdf'], output=r'D:\output.pdf')
      

      提示:需要安装PyPDF2 等库

      pip install PyPDF2
      

      二、python图片添加水印

      import poimage
      from PyPDF2 import PdfReader, PdfWriter
      from tqdm import tqdm
      def add_watermark(file, mark, output_path='./', color="#eaeaea", size=30, opacity=1, space=200,
                        angle=30):
          给图片加水印
          Args:
              file: 图片位置
              mark: 水印内容
              output_path: 输出位置
              color: 水印颜色
              size: 水印大小
              opacity: 不透明度,0.01~1
              space: 水印间距
              angle: 水印角度
          Returns:
          poimage.add_watermark(file, mark, output_path, color, size, opacity, space, angle)
      if __name__ == '__main__':
          add_watermark(file=r'C:\Users\e2e\Pictures\Screenshot 2024-01-10 101054.png', mark='Wenhaofu')
          poimage.del_watermark(
              input_image=r"E:\pdf\MicrosoftTeams-image (62).png",
              output_image=r'E:\pdf\del_watermark.jpg')
      

      三、python实现web

      目标通过Django实现,web里面插入图片视频,并进行简单的排版和描述。

      1.Django的安装

      pip install django
      

      2.创建项目

      2.1 通过终端创建

      1.打开终端
      2.进入某个目录(项目放在哪就去哪,最好不要出现中文,防止编码问题)
      3.执行命令来创建项目
      django-admin.exe startproject track_chart_web
      

      比如我们创建项目名为track_chart_web的django项目,输入django-admin.exe startproject track_chart_web,即可看到自动生成的目录结构,此时django项目就创建成功了:
      在这里插入图片描述

      3.创建APP

      这里的APP不是手机应用那个APP,而是一部分功能的意思。一个Django项目可能需要处理多个业务,我们将业务拆解,一部分一部分分开来管理代码会比较有条理,所以可以通过创建多个app来分别实现多个业务功能。

      用Pycharm打开命令行界面(通过cmd打开也行,不过每次打开都要切换到当前项目路径下,很麻烦,所以最好直接用Pycharm的命令行界面直接打开),然后输入指令python manage.py startapp app名(通过manage.py来创建app)。

      python manage.py startapp index
      

      4.快速上手

      4.1 确保注册app

      在前面3. 创建APP中,我们只是创建的app,但是这样还是不能正常跑起来app中的功能的,我们还得让Django知道,我们写了一个新app,这个声明的过程就是app的注册。此过程需要修改settings.py,过程如下:
      1. 找到settings.py,在列表变量INSTALLED_APPS中,添加一个’ ',准备添加新app(我这里app名为index,大家不同app名需要相应的替换一些代码)
      2. 我们打开新app目录,查看其apps.py内容
      在这里插入图片描述

      3. 我们需要调用这个类,所以用到我们导入模块的知识点通过.来找到相应文件中的类,所以在第一步写的’'中应该写上
      在这里插入图片描述

      4.2 URL和函数的映射

      大家使用网站时,在网站内的页面跳转都会改变URL,不同的URL就需要后台调用不同的功能给用户使用。所以每个URL都得有函数来执行相应的代码。此过程需要修改urls.py,过程如下:

      找到urls.py中列表变量urlpatterns,添加一行path(‘’, )
      在这里插入图片描述

      4.3 视图函数的撰写

      4.3.1 render()使用

      正常应用中,网页都得是html那些文件,我们这现在还是就单纯返回字符串,太单调了。
      那我们return后面就不用HttpResponse()了,而是用render()。render()的用法是这样。

      # 导入render,一般django默认
      from django.shortcuts import render,HttpResponse
      def feedback(request):
      	# 第一个位子是视图函数的request参数,第二个参数位是html文件路径
          return render(request,"goods_list.html")
      
      4.3.2 模板路径问题

      一开始我们改过了settings.py中TEMPLATES字典的DIRS的值为空列表,所以默认的模板路径是当前app文件夹下的templates文件夹中的文件。所以我们在app下创建名为templates的文件夹(必须得为templates,不要拼写错误!),并在templates文件夹下创建html文件。
      设置函数和URL对应关系,就可以测试是否可以正常渲染模板文件。
      在这里插入图片描述

      4.3.3 静态文件static

      开发过程中,像图片、css、js这些文件都称为静态文件,而这些静态文件,在django项目中也是必须放在规定文件夹中的,这个文件夹必须得叫static,和templates一样不能出现拼写错误。为了方便查找,static中,我们再分img、css、js、plugins来分类存放不同的东西。
      我们可以把图片、视频等文件放到img文件夹下面。

      4.3.4 html文件编写

      例如:我想导入视频和图片,并对其简单排版和添加描述,有如下代码:

      <!DOCTYPE html>
      <html lang="en">
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <style>
              .container {
                  display: flex;
                  flex-wrap: wrap;
                  justify-content: space-around;
                  align-items: center;
                  max-width: 1200px;
                  margin: 0 auto;
                  padding: 20px;
              .item {
                  width: calc(25% - 20px);
      
      
      
      
          
      
                  margin: 10px;
                  box-sizing: border-box;
              .video-container, .image-container {
                  position: relative;
                  overflow: hidden;
              video, img {
                  width: 100%;
                  height: auto;
                  object-fit: cover;
              .description {
                  text-align: center;
                  font-size: 16px;
                  padding: 10px;
                  background-color: rgba(0, 0, 0, 0.7);
                  color: white;
                  margin-top: 10px;
          </style>
          <title>视频与图片展示</title>
      </head>
      <div class="container">
          <!-- 视频部分 -->
          <div class="item">
              <div class="video-container">
                  <video width="320" height="240" controls>
                      <source src="/static/img/4.mp4" type="video/mp4">
                      Your browser does not support the video tag.
                  </video>
                  <div class="description">这是视频的描述</div>
              </div>
          </div>
          <!-- 图片部分 -->
          <div class="item">
              <div class="image-container">
                  <img src="/static/img/1.png" alt="图片1描述">
                  <div class="description">图片1:这是第一张图片的详细描述。</div>
              </div>
          </div>
          <div class="item">
              <div class="image-container">
                  <img src="/static/img/2.jpg" alt="图片2描述">
                  <div class="description">图片2:这是第二张图片的详细描述。</div>
              </div>
          </div>
          <div class="item">
              <div class="image-container">
                  <img src="/static/img/3.jpg" alt="图片3描述">
                  <div class="description">图片3:这是第三张图片的详细描述。</div>
              </div>
          </div>
          <div class="item">
              <div class="image-container">
                  <img src="/static/img/4.jpg" alt="图片4描述">
                  <div class="description">图片4:这是第四张图片的详细描述。</div>
              </div>
          </div>
      </div>
      </body>
      </html>
      

      修改templates下面的html即可。

      4.4 运行Django

      python manage.py runserver
      
      http://127.0.0.1:8000/feedback/
      

      浏览器输入http://127.0.0.1:8000/feedback/ 即可访问。

      四、python实现URL转二维码

      代码如下:

      import qrcode
      if __name__ == '__main__':
          # 创建二维码对象
          qr = qrcode.QRCode(
              version=1,
              error_correction=qrcode.constants.ERROR_CORRECT_L,
              box_size=10,
              border=4,
          # 添加数据(这里是网址)
          url = 'https://www.baidu.com/'
          qr.add_data(url)
          qr.make(fit=True)
          # 保存为PNG文件
          img = qr.make_image(fill='black', back_color='white')
          img.save('my_qrcode.png')
      

      生成的二维码如下所示:
      在这里插入图片描述

 
推荐文章
骑白马的蚂蚁  ·  excel中“已超出每日 Python 使用量配额”如何解决 - Microsoft Q&A
3 周前
迷茫的勺子  ·  Python 3.14.0 beta 4 发布 -
3 周前
暗恋学妹的消炎药  ·  南京信息工程大学主页平台管理系统 周洋--周洋主页--Python气象应用
2 周前
俊秀的冲锋衣  ·  Python链表实现
8 小时前
正直的键盘  ·  Python 有指针吗?_python中有没有指针
8 小时前
豁达的跑步鞋  ·  C#.Net Core控制台程序连接SQL Server SqlConnection类报错_netcore sqlconnection-CSDN博客
10 月前
非常酷的仙人掌  ·  内核该怎么学?Linux进程管理工作原理(代码演示)-CSDN博客
1 年前
性感的饼干  ·  Vue: 使用Vuex 保存 Javascript对象、数组_vuex 存储对象_RaySunWHUT的博客-CSDN博客
2 年前
聪明伶俐的李子  ·  通用的Makefile源码解析 - 知乎
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号