我已经使用python,pyqt和SQLite创建了一个登录系统,但是我想知道是否可以创建一个注册系统 . 目前,我自己将用户名和密码存储在SQLite数据库中,然后输入它们,您就可以使用这些用户名和密码登录 . 但是,我希望用户能够通过在QLineEdit中输入用户名和密码来创建自己的用户名和密码,然后单击注册按钮,系统会自动将这些存储在数据库中 .
这是我的代码:
import sys
from PyQt4.Qt import *
import sys
from PyQt4 import QtGui, QtCore
import sqlite3
conn = sqlite3.connect('login.db')
cursor = conn.execute("SELECT count(*) FROM sqlite_master WHERE type='table' AND name='STUDENT';")
if cursor.fetchone()[0] == 0:
conn.execute('''CREATE TABLE STUDENT
(FORENAME TEXT NOT NULL,
SURNAME TEXT NOT NULL,
USERNAME TEXT PRIMARY KEY,
PASSWORD TEXT);''')
conn.execute("INSERT INTO STUDENT (FORENAME,SURNAME,USERNAME,PASSWORD) \
VALUES ('Sean', 'Ryan', 'sryan', 'hello' )");
conn.execute("INSERT INTO STUDENT (FORENAME,SURNAME,USERNAME,PASSWORD) \
VALUES ('Jeff', 'Smith', 'jsmith', 'database' )");
conn.execute("INSERT INTO STUDENT (FORENAME,SURNAME,USERNAME,PASSWORD) \
VALUES ('Teddy', 'Brown', 'tbrown', 'football' )");
conn.execute("INSERT INTO STUDENT (FORENAME,SURNAME,USERNAME,PASSWORD) \
VALUES ('Mark', 'Thompson', 'mthompson', 'computer' )");
conn.execute("INSERT INTO STUDENT (FORENAME,SURNAME,USERNAME,PASSWORD) \
VALUES ('John', 'Brown', 'jbrown', 'phone' )");
conn.commit()
class Login(QtGui.QDialog):
def __init__(self):
QtGui.QDialog.__init__(self)
self.textName = QtGui.QLineEdit(self)
self.textName.setFixedWidth(150)
self.textName.setPlaceholderText("Username");
self.textPass = QtGui.QLineEdit(self)
self.textPass.setEchoMode(self.textPass.Password)
self.textPass.setFixedWidth(150)
self.textPass.move(200,100)
self.textPass.setPlaceholderText("Password");
self.buttonLogin = QtGui.QPushButton('Login', self)
self.buttonLogin.clicked.connect(self.handleLogin)
layout = QtGui.QVBoxLayout(self)
layout.addWidget(self.textName)
layout.addWidget(self.textPass)
layout.addWidget(self.buttonLogin)
self.buttonLogin.setFixedWidth(100)
self.setGeometry(700,300,200,200)
self.setWindowTitle("Login")
def handleLogin(self):
cursor = conn.execute("SELECT count(*) from STUDENT where USERNAME = '" + str(self.textName.text()) + "' and PASSWORD = '" + str(self.textPass.text()) + "'")
if cursor.fetchone()[0] == 0:
QtGui.QMessageBox.warning(
self, 'Error', 'Incorrect username or password')
else:
self.accept()
1 回答
你可以使用python-social-auth和电子邮件后端 . 有关详细信息,请参阅docs .
我使用python-social-auth与Google和Facebook auth,但电子邮件后端允许您使用传统的用户名/密码注册,并存储密码和用户名 .
就个人而言,我已经选择使用G和Facebook等第三方授权 . 不是每个人都喝杯茶 .
Python-social-auth是我的最爱 . 您也可以考虑django-allauth,或者如果您真的只想要一些非常简单的尝试django-registration .