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

说明:

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

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>

在这里插入图片描述

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 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
发出的红包

打赏作者

敲代码敲到头发茂密

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值