python网页登录模板
前言
好家伙,这个程序我做了整整一中午!看我搞得我的QQ邮箱,乌烟瘴气,全是测试用的邮件……
直到看到成功了,我才高兴地蹦了起来,然后发了这篇博客。
这个程序使用django
制作,具体结构如下:
D:.
│ putMessage.py
│
└─template
│ db.sqlite3
│ manage.py
│ users
│
└─template
│ asgi.py
│ settings.py
│ urls.py
│ wsgi.py
│ __init__.py
│
└─__pycache__
settings.cpython-36.pyc
urls.cpython-36.pyc
wsgi.cpython-36.pyc
__init__.cpython-36.pyc
话不多说,看下有修改的地方。
程序
运行前,请安装
django
、pywebio
、requests
模块。
(产品名称可以一键修改)
django
配置
最原始的配置,直接django-admin startproject template
。修改一下以下程序:
settings.py
程序需要修改FOLLOW_HOSTS
,添加元素*
。
urls.py
服务器的主要部分。
from django.shortcuts import HttpResponse
from django.urls import path
from random import randint
from json import dumps
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
isLogin = False # 已登录开关
product = 'xxx' # 产品名称一键修改
passwordNew = 0 # 验证码
def main(request): # 主页面(没啥用,随便写)
return HttpResponse('<center><b><h1><font face="Microsoft YaHei" color="red">欢迎使用%s!</font></h1></b></center>' % product)
def VC(request): # 发送邮箱验证码
global passwordNew
email = request.GET['m']
sender = "[email protected]" # 私人邮件配置,请勿商用
password = "GMDCFHTPQHBEZFCH" # 私人邮件密码,请勿商用
v = randint(100000,999999) # 验证码
# 邮件内容
mailContent = '''%s产品的用户:
您的登录验证码为%d,打死也不要告诉别人哦!''' % (product,v)
ret = True
passwordNew = v
try:
msg = MIMEText(mailContent, "plain", "utf-8")
msg["From"] = formataddr(["老潘的消息", sender])
msg["To"] = formataddr(["FK", email])
msg["Subject"] = "%s软件登录验证" % product
server = smtplib.SMTP_SSL("smtp.yeah.net", 465)
server.login(sender, password)
server.sendmail(sender,[email,],msg.as_string(),)
server.quit()
except Exception as e:
ret = False
err = str(e)
print('遇到错误:%s' % err)
return HttpResponse(dumps({'state':str(ret)}))
def login(request):
# 定义全局变量:登录开关
global isLogin
# 获取已有的用户名、密码
with open('users','r',encoding = 'utf-8') as f:
a = f.read()
b,c,temp = [],[],[]
b = a.splitlines()
#=============================================================================
# 这后面的东西,是以前根据用户名密码来设置的,这里不用c
# for i in range(0,len(b)):
# temp = b[i].split(':')
# c.append({'username':temp[0],'password':temp[1]})
#=============================================================================
# 判断用户端发送的get请求发送的用户名密码是否匹配,因为无重要隐私信息使用get请求
wantU = request.GET['u']
wantP = request.GET['p']
loginer = False
verificationCode = str(passwordNew)
print(verificationCode)
if wantP == verificationCode:
if wantU in b:
loginer = True
isLogin = loginer
# 返回验证结果
if loginer == True:
return HttpResponse(dumps({'state':'Okay','text':'You have successfully logged in, welcome!'}))
else:
return HttpResponse(dumps({'state':'Error','text':'Failed to log in successfully. The possible reasons are: (1) the user is not registered; (2) Wrong user name or password.'}))
def loginOkay(request):
if isLogin == True:
return HttpResponse('<p><b><center><font face="仿宋" color="red"><h1>您好,用户!</h1></font></center></b></p>')
else:
return HttpResponse('<p><b><center><font face="仿宋" color="red"><h1>请先登录!</h1></font></center></b></p>')
urlpatterns = [
path('',main),
path('login/',login),
path('vc/',VC),
path('okay/',loginOkay),
]
客户端程序putMessage.py
from requests import get
from pywebio.input import *
from pywebio.output import *
import webbrowser
product = 'xxx' # 产品名称
serverIP = 'http://127.0.0.1:8000/' # 默认IP
put_markdown('**您好,欢迎使用%s**!' % product)
email = input('输入您的邮箱')
r1 = get(serverIP + 'vc/',params = {'m':email,}).json()
if r1['state'] == 'True':
ps = input('输入您的验证码')
r2 = get(serverIP + 'login/',params = {'u':email,'p':ps}).json()
if r2['state'] == 'Okay':
put_markdown('message from SERVER:%s' % r2['text'])
webbrowser.open_new_tab(serverIP + 'okay/')
else:
put_markdown('您的登录出现错误,如下:n%s' % r2['text'])
else:
put_markdown('验证码发送失败!')
运行效果展示
先运行服务器,python manage.py runserver
.
运行客户端。
输入邮箱点击提交,两三秒后提示输入验证码,与此同时在邮箱里收到验证码,在网页上输入。
(模仿百度)
我提供了很多地方可以供自定义,大家需要,尽管拿去使用,别忘了修改邮箱的密码,请勿商用(这是我自己的小号)。
需要下载请看我的资源。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
二维码