深圳做网站比较好太仓网站制作
news/
2025/10/9 3:59:46/
文章来源:
深圳做网站比较好,太仓网站制作,网络推广页面,域名已有服务器也有怎么做网站前情回顾#xff1a;Django框架 完成用户登录注册 文章目录 1.创建管理员2.完善管理员功能2.1增加管理员登录功能2.2完善展示用户信息功能2.3完善修改用户信息功能2.4完善删除用户信息功能 1.创建管理员
一般管理员都是直接指定#xff0c;不开放页面注册#xff0c;可以直…前情回顾Django框架 完成用户登录注册 文章目录 1.创建管理员2.完善管理员功能2.1增加管理员登录功能2.2完善展示用户信息功能2.3完善修改用户信息功能2.4完善删除用户信息功能 1.创建管理员
一般管理员都是直接指定不开放页面注册可以直接手动在数据库添加Django框架提供了方法让我们直接创建管理员步骤如下
打开pycharm下面的命令行终端输入命令
python manage.py createsuperuser按照提示进行输入信息 打开数据库可以看出已经帮我们插入了管理员的信息 同时Django也提供了管理员登录页面http://127.0.0.1:8000/admin/ 这里不使用框架自带的页面修改已经写好的用户登录页面当做管理员登录页面。
2.完善管理员功能
2.1增加管理员登录功能
新建管理员视图这里笔者命名为admin_controller.py增添登录功能与用户登录功能唯一不同的是增加了一个字段校验判断是不是个管理员判断成功才能登录。
添加登录方法,登录成功后跳转到用户管理页面
def admin_login(request):if request.method POST:username request.POST.get(username)password request.POST.get(password)if username and password:# 进行身份验证 增加一条校验user authenticate(usernameusername, passwordpassword, is_superuser1)if user is not None:# 管理员验证成功 自动重定向用户管理return redirect(/user_list)else:return HttpResponse(无效的凭据)else:return HttpResponseBadRequest(请提供读者ID和密码)return render(request, admin_login.html) # 渲染 user_login.html 模板添加模板 admin_login.html
!DOCTYPE html
html langen
headmeta charsetUTF-8titleLogin/titlestylebody {font-family: Arial, sans-serif;background-color: #f4f4f4;margin: 0;padding: 0;display: flex;justify-content: center;align-items: center;height: 100vh;}.login-container {background-color: #fff;padding: 20px;border-radius: 8px;box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);width: 400px; /* 修改宽度 */height: 400px;margin: 20px; /* 添加外边距 */}.login-container h2 {text-align: center;}.login-container form {display: flex;flex-direction: column;}.login-container form input[typetext],.login-container form input[typepassword] {margin-bottom: 15px;padding: 10px;margin-top: 10%;border-radius: 4px;border: 1px solid #ccc;font-size: 16px;}.login-container form input[typesubmit] {margin-top: 20%;background-color: #007bff;color: #fff;border: none;padding: 10px;border-radius: 4px;cursor: pointer;font-size: 16px;transition: background-color 0.3s ease;}.login-container form input[typesubmit]:hover {background-color: #0056b3;}/style
/head
bodydiv classlogin-containerh2管理员登录/h2form methodpost{% csrf_token %}input typetext nameusername placeholderUsername requiredinput typepassword namepassword placeholderPassword requiredinput typesubmit valueLogin/form/div
/body
/html
配置url 在urls.py增加路径
from django.urls import path
from . import reader_controller
from . import admin_Controller
urlpatterns [path(admin/, admin_Controller.admin_login),path(login/, reader_controller.reader_login, namereader_login),path(signup/, reader_controller.signup, namereader_signup),
]2.2完善展示用户信息功能
在视图增加查询所有用户信息函数 使用filter过滤信息
def get_all_reader(request):# 查询不包括管理员的所有用户normal_users User.objects.filter(is_staffFalse)return render(request, user_list.html, {users: normal_users})返回给模板页面
!DOCTYPE html
html
headmeta charsetUTF-8title管理菜单/titlestyle/* 菜单样式 */body {font-family: Arial, sans-serif;margin: 0;padding: 0;}.sidebar {width: 250px;background-color: #333;height: 100%;position: fixed;left: 0;top: 0;overflow-x: hidden;{#padding-top: 20px;#}}.sidebar a {padding: 10px 16px;margin: 20px;text-decoration: none;font-size: 22px;color: #85f112;display: block;transition: 0.3s;}.sidebar a:hover {background-color: #0edcac;color: black;}.content {margin-left: 250px;padding: 20px;}.header {background-color: #f1f1f1;padding: 10px;text-align: center;}{# 美化表格#}table {border-collapse: collapse;width: 100%;}th, td {border: 1px solid #ddd;padding: 8px;text-align: left;}th {background-color: #f2f2f2;}tr:nth-child(even) {background-color: #f9f9f9;}/style
/head
bodydiv classsidebardiv classheaderh2管理菜单/h2/diva href#用户管理/aa href#图书管理/aa href#借阅管理/aa href#数据库日志/a
/divdiv classcontent!-- 这里是你的主要内容 --h2用户列表/h2tabletrth编号/thth用户名/thth邮箱/thth注册时间/thth操作/th!-- 这里可以根据需要显示其他字段 --/tr{% for user in users %}trtd{{ user.id }}/tdtd{{ user.username }}/tdtd{{ user.email }}/tdtd{{ user.date_joined }}/tdtd
{# 注意这里路径写法#}a href../users/{{ user.id }}/edit/修改/a | a href../delete_user/{{ user.id }}/删除/a/td!-- 这里可以根据需要显示其他字段 --/tr{% endfor %}/table
/div/body
/html
绑定URL path(user_list/, admin_Controller.get_all_reader),效果如图
2.3完善修改用户信息功能
完成修改用户信息分为两步1获取到用户信息 并回显到页面 2提交新的信息到后台
添加查询用户信息函数
def get_reader_by_id(request, id):# 用户编号 查询数据reader User.objects.filter(idid).first()return render(request, user_edit.html, {user: reader})添加用户编辑页面
!DOCTYPE html
html langen
headmeta charsetUTF-8title修改用户信息/titlestylebody {font-family: Arial, sans-serif;margin: 0;padding: 20px;background-color: #f7f7f7;}form {max-width: 400px;margin: 0 auto;background-color: #fff;padding: 20px;border-radius: 5px;box-shadow: 0 0 10px rgba(0,0,0,0.1);}label {display: block;margin-bottom: 5px;font-weight: bold;}input[typetext],input[typepassword],input[typeemail] {width: 100%;padding: 8px;margin-bottom: 10px;border: 1px solid #ccc;border-radius: 3px;}button {padding: 10px 20px;border: none;border-radius: 3px;background-color: #4caf50;color: white;cursor: pointer;}button:hover {background-color: #45a049;}/style
/head
bodyform methodpost action/change_user_password/{% csrf_token %}input typehidden nameuser_id value{{ user.id }}label forusername用户名:/labelinput typetext idusername nameusername value{{ user.username }} readonlybrbrlabel forpassword新密码:/labelinput typepassword idpassword namepassword brbrlabel foremail邮箱:/labelinput typeemail idemail nameemail value{{ user.email }}brbrbutton typesubmit修改/button/form
/body
/html
绑定URL因为需要ID查询用户信息因此路径中应该添加int参数 path(users/int:id/edit/, admin_Controller.get_reader_by_id, nameuser_edit),效果如图 接下来将表单提交到用户信息修改函数 因为密码存在到数据库的时候进行了加密处理因为Django提供了一个修改密码的方法set_password
def change_user_password(request):if request.method POST:try:username request.POST.get(username)new_password request.POST.get(password)print(new_password)new_email request.POST.get(email)user User.objects.get(usernameusername)if new_password:user.set_password(new_password)if new_email:user.email new_emailif new_password or new_email:user.save()return redirect(/user_list) # 密码和邮箱已成功修改或更新except User.DoesNotExist:return HttpResponse(用户不存在) # 用户不存在重定向到错误页面或其他适当的处理return HttpResponseBadRequest(不允许的请求) # 非 POST 请求重定向到其他处理页面
绑定URL path(change_user_password/, admin_Controller.change_user_password),2.4完善删除用户信息功能
类似于查询用户信息都需要提供一个ID
def del_user(request, id):try:user User.objects.get(idid)user.delete()return redirect(/user_list)# 重定向到用户页面except User.DoesNotExist:return HttpResponse(用户不存在)删除成功之后直接跳转用户信息管理页面 最后附上urls.py
from django.urls import path
from . import reader_controller
from . import admin_Controller
urlpatterns [path(admin/, admin_Controller.admin_login),path(login/, reader_controller.reader_login, namereader_login),path(signup/, reader_controller.signup, namereader_signup),path(user_list/, admin_Controller.get_all_reader),path(users/int:id/edit/, admin_Controller.get_reader_by_id, nameuser_edit),path(change_user_password/, admin_Controller.change_user_password),path(delete_user/int:id/, admin_Controller.del_user, namedelete_user),
]
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/932172.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!