python in redis blog applet

1, # enter.py login screen

SG PySimpleGUI AS Import 
Import Redis
Import the traceback
Import Home



DEF Login (name, pwd):
userk_flag = ""
R & lt redis.Redis = (Host = '127.0.0.1', Port = 6379, DB = 0, decode_responses = True)
# Analyzing if a user exists
userks = r.keys ( "user: [0-9] *: bascinfo")
for userk in userks:
r_name = r.hget (userk, "name")
r_pwd = r.hget (userk, "pwd" )
IF r_name r_pwd == == name and pwd:
Flag = True
userk_flag = userk
Print ( "% S login success"% name)
the else:
Print ( "% S login failures, account or password is incorrect")
r.Close ( )
return userk_flag


# Redis registered user key named "user: 1: bascinfo", which contains the name and attribute pwd
DEF Register (name, pwd):
In Flag = False
the try:
R & lt redis.Redis = (Host = '127.0.0.1', Port = 6379, DB = 0, decode_responses = True)
# determines whether a user is present
userks = r.keys ( "user: [0-9] *: basicinfo")
for userk in userks:
r_name = r.hget (userk, "name" )
IF r_name == name:
Print ( "% S already registered, registration can not be repeated"% name)
return Flag
# user does not exist when it is to register
r.incr ( "the users: COUNT")
COUNT = r.get ( "the Users: COUNT")
Print (COUNT)
Print (of the type (COUNT))
Print ( "COUNT:% S"% COUNT)
rt1 = r.hset("user:%s:bascinfo"%count,"name", name)
rt2 = r.hset("user:%s:bascinfo"% count, "pwd" , pwd)
if int(rt1) == 1 and int(rt2) == 1:
flag = True
print("%s注册成功"%name)
r.close()
except:
r.decr("users:count")
# print(traceback.format_exc())
return flag

#主函数
def main():
layout = [
[sg.Text('用户名:'), sg.InputText(key="name")],
[sg.Text('密 码:'), sg.InputText(key="pwd")],
[sg.Text('')],
[sg.Button('登录'), sg.Button('注册'), sg.Exit("退出")],
]
window = sg.Window('BLOG', layout, size=(500, 180),font=("Helvetica", 14), \
element_padding=(4,4),margins = (4,4) )
while True:
event, values = window.Read()
if event is None or event == '退出':
break
name_txt = window.Element("name").Get()
pwd_txt = window.Element("pwd").Get()
if event == "注册":
reg_flag = register(name_txt, pwd_txt)
if reg_flag:
sg.Popup( " "*10 + name_txt + "注册成功,请进行登录!" + " "*10,font=("Helvetica", 14),)
else:
sg.Popup(" "* 10 + name_txt + "registration failed!" + "" * 10, font = ( "Helvetica", 14),)
elif event == "Login":
userk_flag = the Login (name_txt, pwd_txt)
IF userk_flag:
sg.Popup ( "" * 10 + name_txt + "sign in the success of" + "" * 10, font = ( "Helvetica", 14), )
window.close ()
## into the home on display
home.main (userk_flag, name_txt)
BREAK
the else:
sg.Popup ( "" * 10 + name_txt + "login failed" + "" * 10, font = ( "Helvetica" , 14),)
elif Event == "exit":
BREAK
# Close
window.close ()

the try:
main ()
the except:
Print (the traceback calls out.format_exc ())
sg.Popup ( "program exception")

2, a main interface home.py
import PySimpleGUI as sg
import redis
import traceback
import re

#进行关注
def setFollowing(following_user, followed_user ):
print("-----------%s------------"%setFollowing.__name__)
print(following_user)
print(followed_user)
following_rds_key = re.sub("bascinfo","following" , following_user )
print("following_rds_key: " + following_rds_key)
followed_rds_key = re.sub("bascinfo","followed" , followed_user)
print("followed_rds_key: " + followed_rds_key)
r = redis.Redis(host='127.0.0.1', port=6379, db=0, decode_responses=True)
pipe = r.pipeline(transaction=True)
print("**************************")
print({followed_user: 1} )
pipe.sadd(following_rds_key, followed_user )
pipe.sadd(followed_rds_key, following_user )
result = pipe.execute()
r.close()
return True

#搜索用户
def searchUser(myname, name):
search_list = [ ]
if not name:
return search_list
r = redis.Redis(host='127.0.0.1', port=6379, db=0, decode_responses=True)
users = r.keys("user:[0-9]*:bascinfo")
for user_item in users:
r_name = r.hget(user_item,"name")
if r_name and re.search(name, r_name) and r_name != myname:
search_list.append( [user_item, r_name ] )
return search_list
r.close()

#显示关注的人
def showFollowing(userid):
name_list = []
r = redis.Redis(host='127.0.0.1', port=6379, db=0, decode_responses=True)
following_rds_key = re.sub("bascinfo", "following", userid)
result = r.smembers(following_rds_key)
for i in result:
name_list.append(r.hget(i, "name"))
r.close()
return name_list

#显示粉丝
def showFollowed(userid):
name_list = []
r = redis.Redis(host='127.0.0.1', port=6379, db=0, decode_responses=True)
followed_rds_key = re.sub("bascinfo", "followed", userid)
result = r.smembers(followed_rds_key)
for i in result:
name_list.append(r.hget(i, "name"))
r.close()
return name_list

def showFollowEachOther(userid):
name_list = []
r = redis.Redis(host='127.0.0.1', port=6379, db=0, decode_responses=True)
following_rds_key = re.sub("bascinfo", "following", userid)
followed_rds_key = re.sub("bascinfo", "followed", userid)
print("************")
print(following_rds_key)
print(followed_rds_key)
print("************")
r1 = r.exists(following_rds_key)
r2 = r.exists(followed_rds_key)
print(r1);print(type(r1))
print(r2);print(type(r2))
if r1 and r2:
result = r.sinter(following_rds_key,followed_rds_key)
print("获取到相互关注:");print(result)
for i in result:
name_list.append( r.hget(i, "name") )
print(name_list)
return name_list



def main(userk_flag, name_txt):
print("lg_flag: " + userk_flag )
print("name_txt: " + name_txt)

frd_layout = [
[sg.InputText('', size=(20, 1), key="s_name"), sg.Button('搜索', size=(4, 1),font=('Helvetica', 9))],
]

atcl_layout = [
[sg.T('This is inside tab 2')],
]

hot_layout = [
[sg.T('This is inside tab 3')], # mutual concern The while True:
]





eachother_name_list = showFollowEachOther(userk_flag)
if eachother_name_list:
for num,name_item in enumerate(eachother_name_list):
if num == 0:
frd_layout.append([sg.Text("互相关注", size=(20, 1), background_color="#F2F3F4"), ])
frd_layout.append([sg.Text(name_item, size=(20, 1), background_color="#F2F3F4"), ])
# 关注
name_list = showFollowing(userk_flag)
if name_list:
for num, name_item in enumerate(name_list):
if name_item not in eachother_name_list:
if num == 0:
frd_layout.append([sg.Text("关注", size=(20, 1), background_color="#F2F3F4"), ])
frd_layout.append( [ sg.Text( name_item ,size=(20,1), background_color= "#F2F3F4" ) , ] )
#粉丝
name_list = showFollowed(userk_flag)
if name_list:
for num, name_item in enumerate(name_list):
if name_item not in eachother_name_list:
if num == 0:
frd_layout.append([sg.Text("粉丝", size=(20, 1), background_color="#F2F3F4"), ])
frd_layout.append( [ sg.Text( name_item ,size=(20,1), background_color= "#F2F3F4" ) , ] )

tb_group = sg.TabGroup(
[[sg.Tab(" " * 40 + '好友' + " " * 40, frd_layout, font=("Helvetica", 19), ),
sg.Tab(" " * 40 + '个人博文' + " " * 40, atcl_layout, font=("Helvetica", 19)),
sg.Tab(" " * 40 + '好友博文' + " " * 40, hot_layout, font=("Helvetica", 19)), ], ],
title_color="black",
pad=20,
font=("Helvetica", 19),
border_width=None,
)
layout = [
[tb_group]
]
window = sg.Window('欢迎 %s ' % name_txt, layout, size=(1200, 700), font=("Helvetica", 14), )
event, values = window.Read()
if event is None or event == '退出':
break
elif event == "搜索":
s_name = window.Element("s_name").Get()
search_list = searchUser(name_txt,s_name)
#frd_layout要初始化
frd_layout = [
[sg.InputText('', size=(20, 3), key="s_name"), sg.Button('搜索', size=(4, 1) ,font=('Helvetica', 9))],
]
for num,search_item in enumerate(search_list):
frd_layout.append( [ \
sg.Text( search_item[1] ,size=(20,1), background_color= "#F2F3F4" ) , \
sg.InputText(search_item[0], size=(5, 1), background_color="#F2F3F4", visible=False , key = "id" + str(num)),
sg.Button("关注", size = (4,1),button_color=("black", "#4A90E2"), font=('Helvetica', 9 ),key="fwbt"+str(num) )
],)
#初始化值
window.Close()
elif event.find("fwbt") >= 0:
print("------------------%s------------------"%event)
resh = re.search("fwbt(\d+)", event)
num = resh.group(1)
print("num: " + str(num))
followed_userid = window.Element("id" + str(num)).Get()
following_userid = userk_flag
setFollowing(following_userid, followed_userid)
print(following_userid + " 成功关注了 " + followed_userid)
pass
# Initialization value
window.close ()
the else:
Print ( "Unknown event:" + Event)
window.close ()


3, the following operating results

 

 

 

Guess you like

Origin www.cnblogs.com/harryTree/p/11505916.html