django登录权限跳转


COOKIE和SESSION有什么区别:

1:session 在服务器端,cookie 在客户端(浏览器)。
2:session 默认被存在在服务器的一个文件里(不是内存)。
3:session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id)。
4:session 可以放在 文件、数据库、或内存中都可以。
5:用户验证这种场合一般会用session。


session登录权限跳转:

创建一个登陆页面:
[html]   view plain  copy
  1. <!DOCTYPE html>  
  2. <html lang="en">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <title>Title</title>  
  6. </head>  
  7. <body>  
  8. <form action="/kake/login" method="post">  
  9.     {% csrf_token %}  
  10.     用户名:<input type="text" name="username"/><span>{{ mess }}</span><br/>  
  11.     密码:<input type="password" name="pwd"/><br/>  
  12.     <input type="submit" value="登录"/>  
  13. </form>  
  14. </body>  
  15. </html>  
再创建一个成功登陆并可以跳转的页面:
[html]   view plain  copy
  1. <!DOCTYPE html>  
  2. <html lang="en">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <title>Title</title>  
  6. </head>  
  7. <body>  
  8. ---------欢迎访问博客管理系统---------  
  9. {% if request.session.username is not None %}  
  10. 欢迎{{ bloguser.userName }}<br/>  
  11. <a href="/kake/logout">注销</a>  
  12. {% else %}  
  13. <a href="/kake/login">登录</a>  
  14. {% endif %}  
  15. <a href="/kake/a">a登陆后才可以访问的页面</a>  
  16. <a href="/kake/b">b未登录也可以访问的页面</a>  
  17. </body>  
  18. </html>  
跳转页面a,b:
[html]   view plain  copy
  1. <!DOCTYPE html>  
  2. <html lang="en">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <title>a</title>  
  6. </head>  
  7. <body>  
  8. aaaaaaaaaa  
  9. 登陆后才可以访问的页面  
  10. <a href="/kake/success">success</a>  
  11. </body>  
  12. </html>  
[html]   view plain  copy
  1. <!DOCTYPE html>  
  2. <html lang="en">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <title>b</title>  
  6. </head>  
  7. <body>  
  8. --------------  
  9. 未登录也可以访问的页面  
  10. </body>  
  11. </html>  
在APP名/urls.py中,添加:
[python]   view plain  copy
  1. path('login',views.login),  
  2. path('success/<int:id>',views.success,name='success'),  
  3. path('logout',views.login),  
  4. path('a',views.a),  
  5. path('b',views.b),  
最后在views.py中,添加:
[python]   view plain  copy
  1. def login(request):  
  2.     if request.method=='GET':  
  3.         return render(request,'login.html')  
  4.     else:  
  5.         # 接收页面传过来的用户名,密码  
  6.         uname = request.POST.get('username')  
  7.         pwd = request.POST.get('pwd')  
  8.         #从数据库查询是否存在此用户名密码  
  9.         blogUserSet=BlogUser.objects.filter(userName=uname,pwd=pwd)  
  10.         if len(blogUserSet)==1:  
  11.             #跳转到登录的主页面  
  12.             #将用户名放入session  
  13.             session=request.session  
  14.             session['username']=uname  
  15.             if session.get('uri'):  
  16.                 url=session['uri']  
  17.                 session.pop('uri')  
  18.                 return redirect(url)  
  19.             else:  
  20.                 return redirect(reverse('user:success',args=[blogUserSet[0].id]))  
  21.         else:  
  22.             return render(request,'login.html',{'mess':'用户名密码不正确'})  
  23. def success(request,id):  
  24.     blogUser=BlogUser.objects.get(pk=id)  
  25.     return render(request,'success.html',{'bloguser':blogUser})  
  26. def logout(request):  
  27.     #实现注销session  
  28.     session=request.session  
  29.     #session.clear()  
  30.     session.pop('username')  
  31.     #session.flush()  
  32.     return render(request,'success.html')  
  33. #登陆后才可以访问的页面  
  34. def a(request):  
  35.     #判断当前用户是否登录  
  36.     if request.session.get('username'is not None:  
  37.         return render(request,'a.html')  
  38.     else:  
  39.         request.session['uri']=request.get_raw_uri()  
  40.         return render(request,'login.html')  
  41. def b(request):  
  42.     return render(request,'b.html')  

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Django是一种使用Python语言编写的高级Web开发框架,它提供了许多功能和工具来简化Web应用程序的开发过程。要实现Django注册登录功能,需要进行以下步骤: 1. 创建Django项目:首先通过命令行工具创建一个新的Django项目。 2. 创建用户模型:使用Django自带的用户模型或创建自定义的用户模型来存储用户注册和登录所需的信息,如用户名、密码等。 3. 创建视图函数:定义视图函数来处理用户的注册和登录请求。注册视图函数处理用户的注册请求,验证输入的信息并将用户保存到数据库中。登录视图函数将验证用户提供的登录信息,并根据结果响应用户的登录请求。 4. 实现模板:创建HTML模板文件来呈现注册和登录表单,并将数据传递给视图函数进行处理。 5. 创建URL映射:设置URL映射,使用户可以通过特定的URL路径访问注册和登录页面,并将请求发送到相应的视图函数进行处理。 6. 实现登录状态管理:使用Django提供的登录状态管理工具来管理用户的登录状态,如登录后的跳转登录后的用户信息展示等。 7. 添加安全机制:使用Django提供的安全机制,如密码加密、安全令牌等,保障用户的账号安全。 8. 测试功能:编写测试用例对注册登录功能进行测试,确保功能的正常运行。 以上是实现Django注册登录功能的一般步骤,具体实现过程还需要根据项目的需求和功能扩展进行适配。通过Django提供的丰富功能和简化开发的特性,开发者可以快速实现强大的注册登录功能。 ### 回答2: Django是一个流行的Python Web框架,提供了强大的认证和授权功能,可以轻松实现用户注册和登录功能。 首先,我们需要在Django项目中创建一个用户模型,可以使用Django内置的User模型,或者自定义一个用户模型,添加必要的字段,如用户名、密码、邮箱等。 接下来,我们可以使用Django提供的内置视图函数和表单,来实现用户注册和登录功能。对于注册功能,我们可以使用Django内置的CreateView视图类,使用UserCreationForm表单来处理用户注册请求。这个表单包含了用户名、密码、邮箱等字段,并提供了数据验证和保存用户的功能。 对于登录功能,我们可以使用Django内置的LoginView视图类,使用AuthenticationForm表单来处理用户登录请求。这个表单包含了用户名和密码字段,并提供了用户认证和登录的功能。 在视图中,我们可以通过重写相应的函数来自定义注册和登录成功后的跳转页面,以及注册和登录失败后的错误提示。 在模板中,我们可以使用Django提供的模板标签和模板语法,来渲染注册和登录的表单,并显示相应的错误信息。 此外,为了提高用户的安全性,我们可以使用Django提供的密码散列算法和密码哈希函数,对用户的密码进行加密存储,以防止密码泄露。 总结而言,使用Django实现注册登录功能非常简单,我们只需要创建用户模型、使用内置视图函数和表单,并通过自定义视图和模板来实现相应的功能。同时,Django还提供了丰富的认证和授权功能,可以帮助我们更好地管理用户的访问权限和用户会话。 ### 回答3: Django 是一款流行的 Python Web 框架,提供了强大的用户认证和授权功能,可以轻松实现注册和登录功能。 要实现 Django 的注册和登录功能,通常需要进行以下几个步骤: 1. 创建用户模型:首先需要创建用户模型,可以使用 Django 自带的 `User` 模型,或者按照自己的需求自定义一个用户模型。 2. 创建注册页面:通过创建注册页面,用户可以输入用户名、密码、邮箱等信息,然后将这些信息传递给后台进行处理。 3. 后台处理注册逻辑:在后台,可以使用 Django 提供的 `Form` 类来验证用户提交的表单数据,确保数据的合法性。然后,可以创建一个新的用户实例,并将用户的输入数据保存到数据库中。 4. 创建登录页面:登录页面允许用户输入用户名和密码,并将这些信息传递给后台进行验证。 5. 后台处理登录逻辑:后台可以利用 Django 提供的 `authenticate` 函数来验证用户提交的登录信息。如果验证成功,可以使用 `login` 函数将用户认证信息存储到 session 中,以便后续的登录状态保持和权限控制。 以上是实现 Django 注册和登录功能的基本步骤。除了基本的注册和登录功能,我们还可以使用 Django 提供的装饰器和中间件来对用户进行权限控制和用户认证身份的判断。例如,可以使用 `@login_required` 装饰器来限制页面的访问必须登录后才能访问。 总之,Django 提供了强大的用户认证和授权功能,可以帮助我们轻松实现注册和登录功能,并且提供了灵活的配置选项和扩展功能,以适应各种不同的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值