前言
在之前做的豆瓣读书查询基础上,添加一个登录、注册页面
操作
1.将默认数据库配置为mysql,在DouBan/setting.py中进行修改
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'doubanDB', #数据库名,要提前建好
'USER': 'root',
'PASSWORD': '123456',
'HOST': 'localhost',
'PORT': 3306,
}
}
2.在DouBan/__init__.py中添加
import pymysql
pymysql.install_as_MySQLdb()
# 如果报错 mysqlclient 1.4.0 or newer is required;
# 使用下述代码
import pymysql
pymysql.version_info = (1, 4, 13, "final", 0)
pymysql.install_as_MySQLdb() # 使用pymysql代替mysqldb连接数据库
3.在BookList/models.py输入
class User(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=32)
password = models.CharField(max_length=32)
def __str__(self):
return self.name
class Meta:
verbose_name = '用户'
verbose_name_plural = '用户'
4.添加一个DouBan.html,包含注册、登录功能
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Home</title>
<link rel="stylesheet" type="text/css" href="../static/css/particle.css" />
<link rel="stylesheet" type="text/css" href="../static/css/style.css">
<link href='http://fonts.googleapis.com/css?family=Montserrat:400,700' rel='stylesheet' type='text/css'>
<script type='text/javascript' src='../static/js/jquery.particleground.js'></script>
<script type='text/javascript' src='../static/js/demo.js'></script>
</head>
<body>
<div id="mainB">
<div id="ToolBar">
<div class="tags">
<img src="../static/img/man.png" style="CURSOR: pointer" id="Login" />
</div>
<div class="tags">
<img src="../static/img/man.png" style="CURSOR: pointer" id="Register" />
</div>
</div>
<div id="tips">
<div class="tagsTXT">登录</div>
<div class="tagsTXT">注册</div>
</div>
<div id="loginForm">
<div style="float: right;">
<button class="off" onclick="offLoginPanel();">✘</button>
</div>
<form action="/login/" method="post">
<p style="padding-left: 100px;color: black;top:20px;">Login</p>
<p style="padding-left: 40px;">
<input type="text" name="username" id="username" placeholder="Name" style="width: 200px;" />
</p>
<p style="padding-left: 40px;">
<input type="password" name="pwd" id="pwd" placeholder="Password" style="width: 200px;" />
</p>
<span style="float: right; margin-right: 25px;">
<input type="submit" value="登录" style="width: 60px; text-align: center;" />
</span>
</form>
</div>
<div id="registerForm">
<div style="float: right;">
<button class="off" onclick="offRegisterPanel();">✘</button>
</div>
<form action="/register/" method="post">
<p style="padding-left: 100px;color: black;top:20px;">Register</p>
<p style="padding-left: 40px;">
<input type="text" name="username" id="username" placeholder="Name" style="width: 200px;" />
</p>
<p style="padding-left: 40px;">
<input type="password" name="pwd" id="pwd" placeholder="Password" style="width: 200px;" />
</p>
<span style="float: right; margin-right: 25px;">
<input type="submit" value="注册" style="width: 60px; text-align: center;" />
</span>
</form>
</div>
</div>
<script type='text/javascript' src='../static/js/jquery-3.4.1.js'></script>
<script type='text/javascript' src='../static/js/action.js'> </script>
</body>
</html>
5.设置css、js、img路径(在templates同级目录下创建static文件夹,在DouBan/settings.py中设置)
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(os.path.join(BASE_DIR, 'static')),
)
6.修改DouBan/urls.py
from BookList.views import *
urlpatterns = [
path('admin/', admin.site.urls),
path('typeBook/',BookCrawlPage),
path('mainBook/',mainBookPage),
path('register/',register),
path('login/',login),
path('index/',index)
]
7.在manage.py同级目录下,进入cmd输入
python manage.py makemigrations
python manage.py migrate
8.查看mysql,是否生成
9. 修改BookList/views.py
from BookList.models import User
from django.shortcuts import redirect
def index(request):
render(request,'DouBan.html')
def login(request):
if request.method=='POST':
name = request.POST.get('username')
pwd = request.POST.get('pwd')
if User.objects.filter(name=name):
if User.objects.filter(name=name)[0].password==pwd:
return redirect('/mainBook/')
else:
return HttpResponse('密码错误')
else:
HttpResponse('用户不存在')
return render(request,'DouBan.html')
def register(request):
if request.method=='POST':
username = request.POST.get('username')
password = request.POST.get('pwd')
if User.objects.filter(name=username):
return HttpResponse('该账号已经注册')
else:
user_obj = User(name=username,password=password)
user_obj.save()
return HttpResponse('注册成功')
return render(request,'DouBan.html')
10.查看效果
11.查看数据库
12.创建超级用户管理页面,根据要求输入用户名、密码和邮箱
python manage.py createsuperuser
13.在BookList/admin.py注册模块
from BookList.models import User
admin.site.register(User)
14.登录管理页面 http://127.0.0.1/admin/