django登录注册验证之密码包含特殊字符,确认密码一致实现,Form验证

Form验证的原理

首先用户在注册界面提交表单,后台收到表单之后通过request.post取到数据然后传入已经写好的Form类
执行obj.is_valid()这里的obj为Form的实例,在Form类里面对字段一个一个进行验证先执行正则匹配然后执行clean方法
这里的clean方法就是一个钩子,但是不能在验证某个字段的时候调用其他字段,原因是这个时候其他字段不能确定是否验证完成了
需要在所有字段验证之后再执行这个钩子(clean方法)具体实现方法如下:

________________________________________________views.py______________________________________________________
        if request.method == "POST":
        check_obj = account.Register(request.POST)
        if check_obj.is_valid():
            username = check_obj.cleaned_data.get('username')   #验证之后的值存放在check_obj.cleaned_data里面
            password = check_obj.cleaned_data.get('password')
            email = check_obj.cleaned_data.get('email')
—————————————————————————————————————————————————Re
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的 Django AJAX 登录表单示例,它在用户提交表单时使用 AJAX 验证密码是否正确,如果密码不正确则在输入框下方显示错误信息。 首先,创建一个 `views.py` 文件来处理登录视图: ```python from django.contrib.auth import authenticate, login from django.http import JsonResponse def login_view(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 JsonResponse({'success': True}) else: return JsonResponse({'success': False, 'error': 'Incorrect username or password.'}) ``` 这段代码首先检查请求是否为 POST 请求。如果是,它会从 POST 数据中获取用户名和密码,并使用 Django 的 `authenticate` 函数验证凭据。如果凭据有效,则使用 Django 的 `login` 函数进行登录并返回成功响应。否则,它将返回一个带有错误消息的 JSON 响应。 接下来,创建一个 `urls.py` 文件来定义 URL 路径: ```python from django.urls import path from . import views urlpatterns = [ path('login/', views.login_view, name='login'), ] ``` 这段代码为 `/login/` 路径定义了一个名为 `login_view` 的视图。 现在,创建一个 HTML 模板来渲染登录表单: ```html {% extends 'base.html' %} {% block content %} <form id="login-form"> {% csrf_token %} <div> <label for="username">Username:</label> <input type="text" id="username" name="username"> </div> <div> <label for="password">Password:</label> <input type="password" id="password" name="password"> <span id="error-message" style="color: red;"></span> </div> <button type="submit">Login</button> </form> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script> $(function() { $('#login-form').submit(function(event) { event.preventDefault(); $.ajax({ url: '{% url "login" %}', type: 'POST', data: $(this).serialize(), success: function(data) { if (data.success) { window.location.href = '/'; } else { $('#error-message').text(data.error); } } }); }); }); </script> {% endblock %} ``` 这段代码首先从 `base.html` 模板继承并定义一个名为 `content` 的块。在块中,它创建一个包含用户名、密码和登录按钮的表单,并为表单添加一个 ID 以便在 JavaScript 中使用。它还定义了一个带有红色字体的空错误消息元素。 接下来,它将 jQuery 库导入页面,并在文档加载后注册一个处理提交表单事件的函数。该函数首先阻止默认的表单提交行为,然后使用 jQuery 的 `ajax` 函数向 `/login/` URL 发送 POST 请求,并将表单数据序列化为字符串。如果请求成功,它会检查返回的 JSON 数据中的 `success` 属性是否为 `true`。如果是,则重定向到主页。否则,它将使用 jQuery 的 `text` 函数将错误消息设置为返回的 JSON 数据中的 `error` 属性。 最后,定义一个名为 `base.html` 的基础模板,以便在所有页面中使用相同的 HTML 头和页脚。这里省略了头和页脚的代码。 ```html <!DOCTYPE html> <html> <head> <title>{% block title %}Django AJAX Login{% endblock %}</title> </head> <body> {% block content %}{% endblock %} </body> </html> ``` 这段代码定义了一个名为 `title` 的块,并在 `head` 元素中使用它来设置页面标题。它还在 `body` 元素中定义了一个名为 `content` 的块。 现在就可以在 Django 中使用 AJAX 实现登录表单验证了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值