django 简单实现登录验证给你

下面是我针对“django 简单实现登录验证”的攻略,分两个示例逐步说明如下。

示例一

  1. 首先,在基于 Django 创建的网站的项目文件夹下,创建一个新的应用(App)。在终端里输入以下命令:

bash
python manage.py startapp accounts

这将在你的项目文件夹下创建一个名为 accounts 的应用。

  1. accounts 应用下创建一个名为 forms.py 的文件,用于存放表单类。在 forms.py 中,定义一个登录表单。具体代码如下:

```python
from django import forms

class LoginForm(forms.Form):
username = forms.CharField()
password = forms.CharField(widget=forms.PasswordInput)
```

这里我们定义了一个名为 LoginForm 的表单类,包含了两个字段:usernamepassword

  1. 接下来,在 views.py 文件中编写视图函数。在这个例子中,我们可以使用 Django 内置的 LoginView 类来实现登录视图,并将 LoginForm 表单类与它关联起来。具体代码如下:

```python
from django.contrib.auth.views import LoginView
from .forms import LoginForm

class CustomLoginView(LoginView):
template_name = 'accounts/login.html'
authentication_form = LoginForm
redirect_authenticated_user = True
```

在这里,我们创建了一个名为 CustomLoginView 的类,并继承了 Django 内置的 LoginView 类。我们定义了三个属性:

  • template_name: 指定登录页面的模板文件路径;
  • authentication_form: 指定登录表单采用的自定义表单类;
  • redirect_authenticated_user: 指定已认证用户要重定向到哪里。如果将其设置为 True,则已认证用户在访问登录页时将被重定向到主页。

  • 接下来,在 accounts 应用下创建一个名为 urls.py 的文件,并且将 URL 映射到我们在 CustomLoginView 中定义的视图函数上。具体代码如下:

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

urlpatterns = [
path('login/', CustomLoginView.as_view(), name='login'),
]
```

这样,我们就可以在网站中用户访问 /accounts/login/ 时,会调用 CustomLoginView 视图并显示登录页面了。

  1. 最后,在模板文件 accounts/login.html 中编写登录页面的 HTML 代码,并将表单类 LoginForm 中定义的字段与 HTML 表单元素关联起来。具体代码如下:

```html

Login

{% csrf_token %}
{{ form.username }}
{{ form.password }}

```

这里我们使用了 Django 模板语言来生成 HTML 页面,作为登录页面。其中,{% csrf_token %} 用于添加实现 CSRF 保护的隐藏表单,可以有效防止跨站请求伪造攻击。

至此,我们已经通过 Django 应用内置的视图和表单类,成功实现了一个简单的登录验证功能。

示例二

在上面的示例中,我们使用 Django 自带的 LoginView 视图类来实现了登录验证。除此之外,我们还可以通过编写自己的视图函数来实现登录验证。下面是用自定义视图函数实现登录的过程:

  1. accounts/forms.py 中,定义登录表单。具体代码如下:

```python
from django import forms

class LoginForm(forms.Form):
username = forms.CharField()
password = forms.CharField(widget=forms.PasswordInput)
```

  1. accounts/views.py 中,定义登录视图函数 login_view。首先,需要导入 auth 模块,以及刚刚定义的 LoginForm 表单类。具体代码如下:

```python
from django.contrib import auth
from django.shortcuts import render, redirect
from .forms import LoginForm

def login_view(request):
if request.method == 'POST':
form = LoginForm(request.POST)
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = auth.authenticate(username=username, password=password)
if user is not None and user.is_active:
auth.login(request, user)
return redirect('home')
else:
form = LoginForm()

   return render(request, 'accounts/login.html', { 'form': form })

```

在这里,我们编写了一个名为 login_view 的视图函数。当用户提交登录表单时,会创建一个 LoginForm 表单实例,并进行验证。如果表单验证通过,我们会试着使用 auth.authenticate() 方法验证用户凭据。如果认证通过,我们将使用 auth.login() 函数进行用户登录,并将用户重定向至主页。如果表单验证未通过,则继续在登录页面呈现已经输入的表单数据和错误信息。

  1. accounts/urls.py 中,将路由指向定义好的视图函数。具体代码如下:

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

urlpatterns = [
path('login/', login_view, name='login'),
]
```

  1. 最后,在模板文件 accounts/login.html 中编写登录页面的 HTML 代码,并将表单类 LoginForm 中定义的字段与 HTML 表单元素关联起来。具体代码与示例一相同。

这样,我们就实现了基于自定义视图函数的登录验证功能。两个示例的实现方式略有不同,但是都有效地实现了登录验证的需求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:django 简单实现登录验证给你 - Python技术站

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

相关文章

  • 在Ubuntu里如何创建Django超极用户?

    创建Django超级用户可以通过以下步骤实现: 确认Django已经安装,并且已经创建了project和app 在Ubuntu里面可以使用以下命令来安装Django: sudo apt install python3-django 使用以下命令创建一个Django项目(project): django-admin startproject myproject…

    Django 2023年5月15日
    00
  • Django模板过滤器用法详解

    Django模板过滤器是在模板中使用的一种函数式方法。它用于将模板变量转换为所需形式的输出,例如大小写,日期格式,字符串截断等操作。 在这篇文章中,我们将详细介绍Django模板过滤器的使用方法,并提供一些示例代码,以便您更好地了解这个功能。 Django模板过滤器的使用 Django模板过滤器使用“|”(竖杠)进行连接。这表示取左边的变量,将其传递到右边的…

    Django 2023年3月12日
    00
  • django基础知识之GET属性:

    QueryDict类型的对象 包含get请求方式的所有参数 与url请求地址中的参数对应,位于?后面 参数的格式是键值对,如key1=value1 多个参数之间,使用&连接,如key1=value1&key2=value2 键是开发人员定下来的,值是可变的 示例如下 创建视图getTest1用于定义链接,getTest2用于接收一键一值,ge…

    Django 2023年4月12日
    00
  • 教你如何将 Sublime 3 打造成 Python/Django IDE开发利器

    教你如何将 Sublime 3 打造成 Python/Django IDE开发利器 Sublime 3 是一款灵活且可扩展的文本编辑器,许多开发者都喜欢使用它来进行代码编写。如果你正在开发 Python 或 Django 项目,我们可以通过在 Sublime 3 中安装相应的插件以及做一些必要的配置,将其打造成一个强大的 Python/Django IDE …

    Django 2023年5月16日
    00
  • Django项目实战之配置文件详解

    我可以为您讲解一下“Django项目实战之配置文件详解”的攻略。 什么是配置文件? Django是一种MVC(Model-View-Controller)框架,它的配置文件告诉Django如何应用程序构建。一个基本的Django项目包含两个配置文件: settings.py:定义了项目需要的所有设置,包括调试模式、数据库、模板、静态文件、中间件、应用程序、语…

    Django 2023年5月16日
    00
  • 详解Django CBV基类View源码解析

    什么是Django CBV? Django CBV,即Django的基于类的视图(Class-based views),是Django框架中的一个重要组件之一。相比于FBV(函数视图),CBV更加面向对象,使得代码更加可复用、可维护、可扩展。CBV支持多种HTTP请求方法,如GET、POST、PUT、DELETE等。 Django CBV中的基类View D…

    Django 2023年3月12日
    00
  • django的form常用字段和参数

    Django 的内置字段 Field required=True#请求不能为空 widget=None#HTML插件 label=None#用于生成lable标签或显示内容 initial=None#初始值 help_text=”#帮助信息(在标签旁边显示) error_messages=None#(错误信息{‘required’:’不能为空’,‘inva…

    Django 2023年4月13日
    00
  • python如何配置virtualenv虚拟环境,启动两个django环境

      1.安装virtualenv pip3 install virtualenvpip install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenvpip3 install –upgrade pip 2.创建目录 mkdir Myproject cd Myproject 3.创建独立运行环境-…

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