【django】用户注册状态保持、注册成功页面跳转到新闻页功能实现【11】

在人生的道路上,不管是潇洒走一回,或者是千山独行,皆须是自己想走的路,虽然,有的人并不是很快就能找到自己的方向和道路,不过,只要坚持到底,我相信,就一定可以找到自己的路,只要找到路,就不必怕路途遥远了。

导读:本篇文章讲解 【django】用户注册状态保持、注册成功页面跳转到新闻页功能实现【11】,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

说明:

如果需求是注册成功后即表示⽤户登⼊成功,那么此时可以在注册成功后实现状态保持
如果需求是注册成功后不表示⽤户登⼊成功,那么此时不⽤在注册成功后实现状态保持
芒果头条的需求是:注册成功后即表示⽤户登⼊成功

1. login()⽅法介绍

1、⽤户登⼊本质:
状态保持
将通过认证的⽤户的唯⼀标识信息(⽐如:⽤户ID)写⼊到当前浏览器的cookie 和服务端的 session 中。

2、login()⽅法:

Django⽤户认证系统提供了login()⽅法。

封装了写⼊session的操作,帮助我们快速登⼊⼀个⽤户,并实现状态保持。

3、login()位置:
django.contrib.auth.__init__.py⽂件中。
login(request, user, backend=None)

4、 状态保持 session
数据存储的位置:Redis数据库的1号库

# 配置Redis数据库
CACHES = {
    "default": { # 默认
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://192.168.17.3:6379/0",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
    "session": { # session
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://192.168.17.3:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
    "verify_code": { # 验证码
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://192.168.17.3:6379/2",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
}
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "session"

2. login()⽅法登⼊⽤户

#todo 保存注册数据(入库操作)
try:
    user=Users.objects.create_user(username=username,password=password,phone=phone)
except DatabaseError:
    return render(request,'userapp/register.html',{'reg_error_msg':'注册失败'})

#todo 状态保持功能
login(request,user)

用户注册成功后进入到新闻首页

#todo 用户注册成功后返回响应结果
return redirect(reverse('newsapp:index'))

3、注册成功之后,跳转到新闻页面,先创建新闻子应用

python ../../manage.py startapp newsapp

注册子应用

4、配置路由

主路由

urlpatterns = [
    path('admin/', admin.site.urls),
    re_path('^',include('userapp.urls')),
    re_path('^',include(('newsapp.urls','newsapp'),namespace='newsapp'))
]

子路由

from django.urls import path,re_path
from . import views

urlpatterns=[
    re_path('^$',views.IndexView.as_view(),name='index')
]

创建视图

from django.shortcuts import render
from django.views.generic.base import View
# Create your views here.
class IndexView(View):
    def get(self,request):
        return render(request,'newsapp/index.html')

5、创建新闻模板templates

在这里插入图片描述

6、注册操作

注册成功后,进入新闻首页

7、⻚⾯获取当前会话值

<ul class="header-user-links">
      {% if user.username %}
          欢迎您! <span style="font-weight: bolder;">[ {{ user.username }} ]</span>
          &emsp;<a href="/logout/">退出登录</a>&nbsp;
          {% else %}
          <li>
              <a href="/login/">登录</a>&nbsp;&nbsp;&nbsp;
              <a href="/register/">注册</a>
          </li>
      {% endif %}
</ul>

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123320.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!