Django实战之用户认证(初始配置)

yizhihongxing

下面是详细讲解“Django实战之用户认证(初始配置)”的完整攻略。

概述

在Django项目中,用户认证是必不可少的一步。Django提供了一套完善的用户认证系统,可以方便地实现用户的认证、注册、密码重置等功能。本文将介绍Django用户认证的初始配置过程。

准备工作

在开始之前,需要做以下准备工作:

  • 安装Django:使用pip安装Django,可以输入以下命令安装最新版本:

pip install django

  • 创建Django项目:使用Django命令行工具创建项目。

django-admin startproject myproject

配置用户认证

Django的用户认证系统默认是关闭的,需要手动开启。接下来我们将对Django的用户认证系统进行配置。

修改settings.py

myproject目录下的settings.py文件中,找到以下配置项:

INSTALLED_APPS = [
    ...
    # 'django.contrib.admin',
    # 'django.contrib.auth',
    # 'django.contrib.contenttypes',
    # 'django.contrib.sessions',
    # 'django.contrib.messages',
    # 'django.contrib.staticfiles',
]

django.contrib.auth解除注释:

INSTALLED_APPS = [
    ...
    # 'django.contrib.admin',
    'django.contrib.auth',
    # 'django.contrib.contenttypes',
    # 'django.contrib.sessions',
    # 'django.contrib.messages',
    # 'django.contrib.staticfiles',
]

注: 这里我们只需要引入django.contrib.auth这个模块。

然后,在该文件中找到MIDDLEWARE配置项:

MIDDLEWARE = [
    ...
    # 'django.middleware.security.SecurityMiddleware',
    # 'django.contrib.sessions.middleware.SessionMiddleware',
    # 'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    # 'django.contrib.auth.middleware.AuthenticationMiddleware',
    # 'django.contrib.messages.middleware.MessageMiddleware',
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

django.contrib.auth.middleware.AuthenticationMiddleware解除注释:

MIDDLEWARE = [
    ...
    # 'django.middleware.security.SecurityMiddleware',
    # 'django.contrib.sessions.middleware.SessionMiddleware',
    # 'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    # 'django.contrib.messages.middleware.MessageMiddleware',
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

注:这里我们开启了中间件django.contrib.auth.middleware.AuthenticationMiddleware,用于在用户认证时对请求进行检查。

创建数据库表

在配置完用户认证系统之后,我们需要创建相应的数据库表。填写以下命令:

python manage.py makemigrations
python manage.py migrate

上述命令将会创建auth应用所需的数据表, migrate命令将这些表迁移到数据库中。

创建超级用户

在开始用户认证之前,我们需要先创建一个超级用户,用于管理用户。

python manage.py createsuperuser

填写超级用户账号、电子邮件和密码等信息。完成后,将创建一个超级用户账号。

现在我们的用户认证系统已经配置好了,接下来我们将实现一个用户注册和登录的功能。

示例说明

下面将通过两个实例来说明用户注册和登录的功能。

示例1:用户注册

  1. 在myproject目录下,创建一个新的应用(app):

python manage.py startapp user

  1. user 应用主目录下创建urls.py 文件用于url映射,添加以下内容:

```
from django.urls import path
from . import views

urlpatterns = [
    path('register/', views.register),
]

```

  1. user 应用主目录下创建views.py 文件,添加以下代码:

```
from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm
from django.contrib import messages

def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
messages.success(request, f'Account created for {username}!')
return redirect('home')
else:
form = UserCreationForm()
return render(request, 'register.html', {'form': form})
```

  1. 创建 register.html, 添加以下内容:

```
{% extends 'base.html' %}

{% block content %}

Register Here

{% csrf_token %}
{{ form.as_p }}

{% endblock %}
```

  1. 在myproject目录下的urls.py文件中,添加注册的URL映射:

```
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
path('admin/', admin.site.urls),
path('', include('user.urls')),
]
```

  1. 运行服务器:

python manage.py runserver

打开浏览器并输入 http://127.0.0.1:8000/register/ ,打开注册页面,填写用户名和密码,点击注册按钮即可完成注册。注册完成后会返回到主页。

示例2:用户登录

先在之前的user应用主目录下创建urls.py,添加以下内容:

from django.urls import path
from . import views

urlpatterns = [
    path('login/', views.login),
]

views.py 文件中添加以下代码:

from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login
from django.contrib import messages

def login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect('home')
        else:
            messages.info(request, 'Invalid credentials')
    return render(request, 'login.html')

然后是登录的HTML模板, 在user应用主目录下创建login.html文件,添加以下内容:

{% extends 'base.html' %}

{% block content %}
  <h2>Login Here</h2>
  <form method="post">
    {% csrf_token %}
    <label for="username">Username:</label>
    <input type="text" id="username" name="username">
    <label for="password">Password:</label>
    <input type="password" id="password" name="password">
    <button type="submit">Login</button>
  </form>
{% endblock %}

接下来在myproject应用主目录下的urls.py文件中,添加登录URL的映射:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('user.urls')),
    path('login/', include('user.urls')),
]

运行服务器:

python manage.py runserver

打开浏览器并输入 http://127.0.0.1:8000/login/ ,打开登录页面,填写之前注册的用户名和密码,点击登录按钮即可完成登录。登录完成后会返回到主页。

以上就是Django用户认证(初始配置)的完整攻略,同时这包含了两条示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django实战之用户认证(初始配置) - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • django2.0 报错 does not appear to have any patterns in it. If you see valid patterns in the file then the issue is probably caused by a circular import.

      raise ImproperlyConfigured(msg.format(name=self.urlconf_name)) django.core.exceptions.ImproperlyConfigured: The included URLconf ‘<module ‘users.urls’ from ‘D:\\mygitfile\\mei…

    Django 2023年4月9日
    00
  • 【开源】最近写了一个简单的网址导航网站

    前言 随着团队的成长,要管理的项目或使用的内部系统越来越多,很多内部系统都没有域名,使用IP+端口,很难记。 为了解决这个痛点,我抽空写了个导航网站~ 目前用下来效果还不错,可以基本完美的解决这个问题。 项目名称是 SiteDirectory ,代码在 Github 开源了: https://github.com/Deali-Axy/SiteDirector…

    2023年4月10日
    00
  • Django组件总结

    分页器的使用 分页器在页面中非常常见,当数据库条数数据过多时,页面一次性显示不好看时,我们可以使用分页器,将数据分几次显示。 1.1 数据库内插入大量数据 Booklist=[] for i in range(100): Booklist.append(Book(title=”book”+str(i),price=30+i*i)) Book.objects.…

    Django 2023年4月11日
    00
  • django面试题必问

    1、谈谈你对http协议的认识。 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。 HTTP是一个应用层协议,由请…

    Django 2023年4月13日
    00
  • Django自定义认证后端实现多种登录方式验证

    如果你在使用 Django 开发 Web 应用程序时,需要实现多种登录方式验证,比如用户名密码登录、短信验证码登录、第三方登录等,那么 Django 自带的认证后端可能无法满足你的需求。在这种情况下,你可以考虑自定义认证后端,来实现多种登录方式的验证。 本文将为你提供实现 Django 自定义认证后端的完整攻略,包括: 创建自定义认证后端 配置 Django…

    Django 2023年3月13日
    00
  • django settings.py配置文件的详细介绍

    下面是针对“django settings.py配置文件的详细介绍”的完整攻略。 什么是Django的settings.py文件? settings.py是Django应用程序中最重要的配置文件之一,它存储了应用程序的主要参数设置,例如数据库信息、口令等。在项目开始前,开发者需要首先创建该文件,直接在项目目录下创建一个名为settings.py的文件即可。 …

    Django 2023年5月16日
    00
  • Django框架(十八)—— auth框架:用户登录、注册、认证

    一、什么是author模块 Auth模块是Django自带的用户认证模块,可以实现包括用户注册、用户登录、用户认证、注销、修改密码等功能。默认使用 auth_user 表来存储用户数据。 二、auth模块的使用 1、创建超级用户(create_superuser()) 创建超级用户就是在auth_user表中插入数据,密码是加密的,因此不能手动在数据库中插入…

    Django 2023年4月10日
    00
  • Django笔记十三之select_for_update等选择和更新等相关操作

    本篇笔记将介绍 update 和 create 的一些其他用法,目录如下: get_or_create update_or_create select_for_update bulk_create bulk_update 1、get_or_create 前面我们介绍过 get() 和 create() 的用法,那么 get_or_create() 的意思很简…

    2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部