用别人的网站多不舒服,自己手撸一个密码批量生成器网站

news2024/11/23 16:43:48

自己手撸一个密码批量生成器网站

自己手撸一个密码生成器网站
小编可以这样给你说,这个是最简单的拉,没有任何的装饰,简单容易上手,还是经过小编测试过的哈

python版本django版本
python3.8.6Django3.0.5

声明

这个代码也就是小编简单的写了下,实现了最基本的功能,当然了还是可以优化的,还望大佬勿喷
里面的name名称可能不是很规范,大家可以换成自己的,小编这也是为了方便大家更容易的理解,直接使用拼音了,部分变量小编看网上有,直接ctrl+v了,还请谅解
其次,小编写这篇文章的目的就是,怕以后还得翻资料百度啥的,直接写在这里,简单易懂,想看的时候直接看

效果图

当你第一眼看见他的时候,那就是一个字,太白了,白了好呀,简单易懂,代码在文章最开始就有

在这里插入图片描述

index代码

这个是index.html的代码
里面估计大家应该可以看的懂了吧

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* 容器 ,也就是中间的那个大表格*/
        .container {
            width: 600px;
            height: 300px;
            background-color: white;
            position: absolute;
            /* 水平垂直居中 */
            left: 0;
            right: 0;
            top: 0;
            bottom: 0;
            margin: auto;
        }

    </style>
</head>

<body>
    <div>
        /* 页面左上角的那几个大字 */
        <h1 src="index.html">密码批量生成器</h1>
    </div>
    <div class="container">
         /* action为空,代表将数据提交给当前html,可以提交给别的html,但是那样的话,还得弄第二个页面,小编比较懒 */
        <form action="" method="post">
            /* django里面如果用到post方法就需要添加上下面这一句话,否则会被csrf拦截,简单这样理解吧 */
            {% csrf_token %}
            <table border="2" width="600px" height="100px">
                <!-- <caption>根据需要选择自己的密码</caption> -->
                <tbody align="center">
                    <tr>
                        <th>选择生成密码规则</th>
                    </tr>
                    <tr>                    
                        <td>
                            /* 小编这几个name名称是不是很陋,但是也很容易理解哈  ,checked代表着默认是勾上的*/
                            <input type="checkbox" name="xiaoxie" value="1" checked> 小写字母:a~z
                            <input type="checkbox" name="daxie" value="1" checked>大写字母:A~Z
                            <input type="checkbox" name="shuzi" value="1" checked> 数字:0~9<br>
                            <input type="checkbox" name="teshu" value="1" checked>特殊字符:!@#$%^&*<br>
                            <input type="checkbox" name="paichu" value="1" checked> 排除字符:iIl1o0O<br>
                        </td>
                    </tr>
                    <tr>
                        /* 下面的是2个下拉框  select代表着默认值呦,但是可以循环来实现这个功能哈,小编这里只是为了更方便看懂 */
                        <td>密码位数:<select name="pass_wei">
                                <option  value="8"  >8</option>
                                <option  value="9">9</option>
                                <option  value="10">10</option>
                                <option  value="11">11</option>
                                <option value="12">12</option>
                                <option  value="13">13</option>
                                <option  value="14">14</option>
                                <option  value="15">15</option>
                                <option  value="16" selected>16</option>
                                <option  value="17">17</option>
                                <option  value="18">18</option>
                                <option  value="19">19</option>
                                <option  value="20">20</option>
                                <option  value="21">21</option>
                                <option  value="22">22</option>
                                <option  value="23">23</option>
                                <option  value="24">24</option>
                                <option  value="25">25</option>
                                <option  value="26">26</option>
                                <option  value="27">27</option>
                                <option  value="28">28</option>
                                <option  value="29">29</option>
                                <option  value="30">30</option>
                            </select>
                            密码数量:<select name="pass_shu">
                                <option  value="1" selected >1</option>
                                <option  value="2">2</option>
                                <option  value="3">3</option>
                                <option  value="4">4</option>
                                <option  value="5">5</option>
                                <option  value="6">6</option>
                                <option  value="7">7</option>
                                <option  value="8">8</option>
                                <option  value="9">9</option>
                                <option  value="10">10</option>
                                <option  value="11">11</option>
                                <option  value="12">12</option>
                                <option  value="13">13</option>
                                <option  value="14">14</option>
                                <option  value="15">15</option>
                                <option  value="16">16</option>
                                <option  value="17">17</option>
                                <option  value="18">18</option>
                                <option  value="19">19</option>
                                <option value="20">20</option>
                            </select>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <button>生成密码</button>
                        </td>
                    </tr>
                     /* 接收view视图传过来的passwdlist列表,并循环展示,如果为空,则不显示 */
                    {% for vl in passwdlist %}
                    <tr>
                        <td style="color: green;">{{ vl }}<br>
                        </td>
                    </tr>
                    {% endfor %}
                </tbody>
            </table>
        </form>
    </div>
</body>
</html>

views视图代码

里面定义了与前面html的信息交互,利用python来写的,相对来说还是比较简单,容易理解的。

from django.shortcuts import render
from django.http import HttpResponse
import random

# Create your views here.

def index(request):
    '''首页展示'''
    wei = request.POST.get("pass_wei")
    print(wei)
    shu = request.POST.get("pass_shu")
    print(shu)
    xiaoxie = request.POST.get("xiaoxie")
    print(xiaoxie)
    daxie = request.POST.get("daxie")
    print(daxie)
    shuzi = request.POST.get("shuzi")
    print(shuzi)
    teshu = request.POST.get("teshu")
    print(teshu)
    paichu = request.POST.get("paichu")
    print(paichu)
    
    list = []
    ##这里为什么要使用try呢,应为Index传过来的数据有可能是None值,下面要转成int类型,这样会报错,需要做异常处理
    try:
      # 候选字母
      ALPHA = "abcdefghjkmnpqrstuvwxyz"
      if xiaoxie == None:
        ALPHA = ""
    # 候选数字
      D_ALPHA = "ABCDEFGHJKMNPQRSTUVWXYZ"
      if daxie == None:
        D_ALPHA = ""
    # 候选数字
      NUMBER = "123456789"
      if shuzi == None:
        NUMBER = ""
    # 候选特殊字符
      SPECIAL = "@#$%&*"
      if teshu == None:
        SPECIAL = ""
    # 候选特殊字符
      Exclude = ""
      if paichu == None:
        Exclude = "iIl1o0O"
      
      characters = ALPHA + D_ALPHA + NUMBER + SPECIAL + Exclude
      #进行随机密码的生成,shu这个变量是要生成几个密码,wei代表着要生成的几位密码
      for i in range(0,int(shu)):
        password = ""
        for b in range(0,int(wei)):
          password += random.choice(characters)
        else:
          list.append(password)
      context={"passwdlist":list}
    except:
      context={"passwdlist":list}
    print(list)
    return render(request,"getpasswd/index.html",context)

urls路由信息

利用urls路由信息,来对用户的访问url进行一个引导快速定位一个网页

"""myproject URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/3.0/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from getpasswd import views   ###这一步不可少哈

##需要添加一个路由,来引导用户访问url跳转
urlpatterns = [
    path("", views.index),#首页展示
]

在这里插入图片描述

看到这里其实代码已经可以了,如果不使用容器环境,可以直接在django里面启动,python3 manage.py runserver 0.0.0.0:8000端口就可以访问了,如果需要发布到容器中,还请继续往下看

在这里插入图片描述

访问

在这里插入图片描述

打包成镜像

更多关于Dockerfile文件的编写详情还请浏览kubernetes基础之docker file文件详解(百分之百空手接白刃篇)

dockerfile内容

通过dockerfile将源码导入python3.8的镜像中,下一步将利用dockerfile来创建一个新的镜像

## 镜像来源
FROM python:3.8


# # 创建项目目录并设置工作目录
RUN mkdir /app && pip3 install django==3.0.5 -i https://pypi.tuna.tsinghua.edu.cn/simple
WORKDIR /app

# # 复制项目文件,app.tar是小编将已经写好的代码打包成了tar包,这里一定要换成自己的目录哈
ADD data/app.tar /app

# # 运行 Django 项目
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

相关操作记录

利用docker build 命令通过Dockerfile来创建一个新的镜像,-t 指定新镜像的名称,也可以使用-f 来指定Dockerfile文件的所在的位置,有镜像了就可以为所欲为了

[root@localhost ~]# cd dockerfile/
[root@localhost dockerfile]# docker build  -t app:v1 .
Sending build context to Docker daemon  2.497MB
Step 1/5 : FROM python:3.8
3.8: Pulling from library/python
0e29546d541c: Pull complete
9b829c73b52b: Pull complete
cb5b7ae36172: Pull complete
6494e4811622: Pull complete
6f9f74896dfa: Pull complete
fcb6d5f7c986: Pull complete
35b0d149a82c: Pull complete
700a07047b6b: Pull complete
793b1b0c3ddf: Pull complete
Digest: sha256:4c4e6735f46e7727965d1523015874ab08f71377b3536b8789ee5742fc737059
Status: Downloaded newer image for python:3.8
 ---> ce9555db0df5
Step 2/5 : RUN mkdir /app && pip3 install django==3.0.5 -i https://pypi.tuna.tsinghua.edu.cn/simple
 ---> Running in 1e2aacc5d2fe
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting django==3.0.5
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/a9/4f/8a247eee2958529a6a805d38fbacd9764fd566462fa0016aa2a2947ab2a6/Django-3.0.5-py3-none-any.whl (7.5 MB)
Collecting pytz
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/32/4d/aaf7eff5deb402fd9a24a1449a8119f00d74ae9c2efa79f8ef9994261fc2/pytz-2023.3.post1-py2.py3-none-any.whl (502 kB)
Collecting asgiref~=3.2
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/9b/80/b9051a4a07ad231558fcd8ffc89232711b4e618c15cb7a392a17384bbeef/asgiref-3.7.2-py3-none-any.whl (24 kB)
Collecting sqlparse>=0.2.2
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/98/5a/66d7c9305baa9f11857f247d4ba761402cea75db6058ff850ed7128957b7/sqlparse-0.4.4-py3-none-any.whl (41 kB)
Collecting typing-extensions>=4
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/24/21/7d397a4b7934ff4028987914ac1044d3b7d52712f30e2ac7a2ae5bc86dd0/typing_extensions-4.8.0-py3-none-any.whl (31 kB)
Installing collected packages: typing-extensions, sqlparse, pytz, asgiref, django
Successfully installed asgiref-3.7.2 django-3.0.5 pytz-2023.3.post1 sqlparse-0.4.4 typing-extensions-4.8.0
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
WARNING: You are using pip version 21.2.4; however, version 23.3.1 is available.
You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command.
Removing intermediate container 1e2aacc5d2fe
 ---> 420b4d1fc61a
Step 3/5 : WORKDIR /app
 ---> Running in bd82a953b94d
Removing intermediate container bd82a953b94d
 ---> cea4b9b66116
Step 4/5 : ADD data/app.tar /app
 ---> 9e2104efdc76
Step 5/5 : CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
 ---> Running in 559af7806944
Removing intermediate container 559af7806944
 ---> f933c80f35e0
Successfully built f933c80f35e0
Successfully tagged app:v1

 ###通过docker images就可以看见新创建的额镜像了
 [root@localhost dockerfile]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
app                  v1                  f933c80f35e0        26 seconds ago      949MB
tancloud/hertzbeat   latest              34e958709e54        2 months ago        453MB
python               3.8                 ce9555db0df5        22 months ago       909MB

在这里插入图片描述

结束语

有镜像了就好办了,安装部署到自己的k8s集群或者使用docker直接启动,记得咱们端口是8000哈
努力可能是痛苦的,但是收获的时候一定是快了的,加油,少年

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

应用程序架构是如何演变的

【squids.cn】 全网zui低价RDS&#xff0c;免费的迁移工具DBMotion、数据库备份工具DBTwin、SQL开发工具等 如果您一直在开发或以某种方式参与应用程序架构&#xff0c;那么在过去的几年中您肯定看到了许多变化。有很多不同类型的架构和技术陆续出现然后消失&#xff0c;以至于…

Windows端口封禁图文教程

文章目录 方式一&#xff1a;打开secpol.msc方式二&#xff1a;Microsoft 管理控制台参考文档 方式一&#xff1a;打开secpol.msc WIN键R输入secpol.msc 在本地安全策略窗口中&#xff0c;选中“IP安全策略&#xff0c;在本地计算机”&#xff0c;右键右侧空白处&#xff0c;选…

ubuntu2004上安装openjdk6

今天因为工作需要要在Ubuntu2004上安装openjdk6&#xff0c;还是有点麻烦的. 这里记录一下过程。 Step 1&#xff1a; openjdk的下载地址在这里&#xff0c;选择对应的架构并将openjdk开头的包全部下载回来。 Step 2&#xff1a; 安装的时候系统缺少以下依赖&#xff1a; …

3d模型轻量化方法以及工具平台

3D模型轻量化是指减少3D模型的文件大小&#xff0c;以便在需要更快的数据传输或更快的渲染速度时使用。 一、以下是几种常见的3D模型轻量化方法&#xff1a; 1、移除不必要的细节&#xff1a;模型中可能存在一些细节&#xff0c;但这些细节对于渲染或使用模型并不重要。通过移…

基于springboot实现乐校园二手书交易管理系统【项目源码+论文说明】

基于springboot实现乐校园二手书交易管理系统演示 摘要 在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括乐校园二手书交易管理系统的网络应用&#xff0c;在外国二手书交易管理系统已经是很普遍的方式&#xff0c;不过国内的…

如何实现两栏布局?这篇文章告诉你所有的细节!

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 一、背…

031-从零搭建微服务-监控中心(一)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff08;后端&#xff09;&#xff1a;mingyue: &#x1f389; 基于 Spring Boot、Spring Cloud & Alibaba 的分布式微服务架构基础服务中心 源…

正点原子嵌入式linux驱动开发——外置RTC芯片PCF8563

上一章学习了STM32MP1内置RTC外设&#xff0c;了解了Linux系统下RTC驱动框架。一般的应用场合使用SOC内置的RTC就可以了&#xff0c;而且成本也低&#xff0c;但是在一些对于时间精度要求比较高的场合&#xff0c;SOC内置的RTC就不适用了。这个时候需要根据自己的应用要求选择合…

Halcon 常用通道Scale灰度元操作整理

一、说明 我们将常见的,基于图层信号幅度的操作集中展现出来,以便以后见到相关的操作不会产生唐突。至于这些算子在项目中的灵活应用,我们将在项目中具体指定。 二、基于数量(Scale)的操作 2.1 亮度(Scale)调整 scale_image_max(Image:ImageScaleMax::)

微信批量添加好友,让你的人脉迅速增长

在这个数字化时代&#xff0c;微信作为中国最流行的社交平台之一&#xff0c;已经成为了人们生活中不可或缺的一部分。它的广泛使用为我们提供了无限的社交可能性。你是否曾为了扩大人脉圈子而犯愁&#xff1f;今天&#xff0c;我将向你揭示一个高效添加微信好友的秘密武器&…

Camtasia2024破解版百度云网盘下载

真的要被录屏软件给搞疯了&#xff0c;本来公司说要给新人做个培训视频&#xff0c;想着把视频录屏一下&#xff0c;然后简单的剪辑一下就可以了。可谁知道录屏软件坑这么多&#xff0c;弄来弄去头都秃了&#xff0c;不过在头秃了几天之后&#xff0c;终于让我发现了一个值得“…

居舍系列再续“异国的相遇2023”艺术项目

跨越四城感知艺术声浪&#xff0c;以科技与艺术探索旅行中的情绪共鸣 太古酒店集团旗下居舍系列再度开启两年一度的艺术项目“异国的相遇 2023”&#xff08;Encounters Across Cultures&#xff09;新篇章 — 当艺术与科技同频 &#xff0c;以艺术为媒介&#xff0c;将科技赋予…

16 用于NOMA IoT网络上行链路安全速率最大化的HAP和UAV协作框架

文章目录 摘要相关模型仿真实验仿真结果 摘要 优化无人机到HAP的信道分配、用户功率和无人机三维位置来研究上行安全传输解决非凸问题&#xff0c;采用K-means聚类算法&#xff0c;将成对的用户划分成不同的组&#xff0c;每个簇可以有相应的无人机服务&#xff0c;然后将构造…

NAT技术与代理服务器

目录 一、NAT与NAPT技术 1.NAT技术 2.NAPT技术 &#xff08;1&#xff09;四元组的唯一性 &#xff08;2&#xff09;数据的传输过程 &#xff08;3&#xff09;NAPT的缺陷 二、代理服务器 1.正向代理和反向代理 2.代理服务器的应用 &#xff08;1&#xff09;游戏加…

16、Python --案例实操:控制台打印【 菱形 】和 【 圆 】

目录 控制台打印菱形控制台打印圆 控制台打印菱形 # 控制台打印菱形# 层数 num 8 # 打印上半部分 for i in range(num):# 第一行if i 0:print( * (num - 1 - i) *)else:print( * (num - 1 - i) * (i * 2 - 1) * *)# 打印下半部分 for i in range(num - 1):if i num …

Qt重定向QDebug,Qt/C++开源作品39-日志输出增强版V2022

Qt重定向QDebug&#xff0c;自定义一个简易的日志管理类 Chapter1 Qt重定向QDebug&#xff0c;自定义一个简易的日志管理类0.前言1.最简单的操作运行结果2.实现一个简易的日志管理类 Chapter2 Qt::Qt Log日志模块Qt Log日志模块官方解释官方Demo思路 Chapter3 QT日志模块的个性…

Vue3 创建项目

1 桌面打开 CMD窗口&#xff0c;使用vue create 项目名创建项目。 2 选择Manually select features 自定义配置 3 选择配置&#xff1a;使用空格确认/取消&#xff0c;回车确定&#xff1a; Babel 降级处理 CSS Pre-processors CSS预处理器 Linter/Formatter 代码检查 4 选择vu…

「滚雪球学Java」:基础程序设计(章节汇总)

&#x1f3c6;本文收录于「滚雪球学Java」专栏&#xff0c;专业攻坚指数级提升&#xff0c;助你一臂之力&#xff0c;带你早日登顶&#x1f680;&#xff0c;欢迎大家关注&&收藏&#xff01;持续更新中&#xff0c;up&#xff01;up&#xff01;up&#xff01;&#xf…

Vue3:将表格数据下载为excel文件

需求 将表格数据或者其他形式的数据下载为excel文件 技术栈 Vue3、ElementPlus、 实现 1、安装相关的库 下载xlsx 和 file-saver 库 npm install -S file-saver npm install -S xlsx引入XLSX库和FileSaver库 import XLSX from xlsx; import FileSaver from file-saver;…

华为OD机考算法题:高效的任务规划

题目部分 题目高效的任务规划难度难题目说明 你有 n 台机器编号为 1 ~ n&#xff0c;每台都需要完成一项工作&#xff0c; 机器经过配置后都能独立完成一项工作。 假设第 i 台机器你需要花 分钟进行设置&#xff0c; 然后开始运行&#xff0c; 分钟后完成任务。 现在&#x…