Django前后端交互实现用户登录功能

发布于:2025-08-18 ⋅ 阅读:(20) ⋅ 点赞:(0)

Django框架简介

Django是一个高级Python Web框架,鼓励快速开发和简洁实用的设计。它遵循“约定优于配置”的原则,内置了许多功能,使开发者能够专注于业务逻辑而非底层实现。

核心特点

全栈框架
Django提供从数据库ORM到模板渲染的一站式解决方案,内置用户认证、管理员界面等功能,减少第三方依赖。

DRY原则
严格遵循Don't Repeat Yourself(不要重复自己)原则,通过抽象和模块化减少冗余代码。

MTV架构模式
Django采用Model-Template-View架构:

  • Model:处理数据层,通过ORM与数据库交互
  • Template:负责前端展示
  • View:处理业务逻辑,连接Model和Template

主要组件

ORM(对象关系映射)
允许用Python类定义数据库模型,自动生成SQL语句,支持多种数据库后端(PostgreSQL、MySQL等)。

路由系统
通过URLconf模块将URL模式映射到视图函数,支持正则表达式和路径转换器。

模板引擎
使用Django Template Language(DTL)分离逻辑和展示,支持模板继承和过滤器。

内置Admin
自动生成管理后台,支持数据CRUD操作,可通过简单配置自定义界面。

适用场景

内容管理系统
内置组件适合快速构建博客、新闻站点等CMS系统。

数据驱动应用
强大的ORM和Admin界面简化了复杂数据管理。

RESTful API
结合Django REST framework可快速构建API服务。

简单示例

定义模型:

from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    pub_date = models.DateTimeField('date published')

创建视图:

from django.shortcuts import render
from .models import Article

def article_list(request):
    articles = Article.objects.all()
    return render(request, 'blog/list.html', {'articles': articles})

配置URL:

from django.urls import path
from . import views

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

性能优化

缓存系统
支持多级缓存(内存、文件、数据库、Redis等),提供模板片段缓存和视图缓存装饰器。

安全特性
内置CSRF保护、SQL注入防护、XSS防御等安全机制,自动处理常见漏洞。

Django的丰富文档和活跃社区使其成为企业级应用开发的高效选择,适合需要快速迭代的中大型项目。

用户登录功能,前后端交互事例

View:

from django.http import JsonResponse
from django.contrib.auth import authenticate, login

def silogin(request):
    data=request.GET
    username=data.get("username")
    password=data.get("password")
    user =authenticate(username=username,password=password)
    if not user:        #用户不存在
        return JsonResponse({
                "result" : "用户名或密码不正确",
            })
    login(request,user)
    return JsonResponse({
        "result" : "success",
        })

URL:

from django.urls import path
from game.views.settings.getinfo import getinfo

from game.views.settings.login import silogin

#例子
#表示当用户访问 http://你的域名/getinfo/ 这个路径时,Django 会调用 getinfo 这个视图函数来处理请求。

urlpatterns=[
    path("getinfo/", getinfo, name="settings_getinfo"),
    path("login/",silogin,name="settings_login"),
]

前端:

add_listening_events_login(){           //监听login下的注册按键
        let outer=this;
        this.$login_register.click(function(){
            outer.register();
        });
        this.$login_submit.click(function(){
            outer.login_on_remote();
        });
    }

login_on_remote(){      //在远程服务器上登录
        let outer=this;
        let username=this.$login_username.val();
        let password=this.$login_password.val();
        this.$login_error_message.empty();
        $.ajax({
            url: "https://域名/settings/login",
            type: "GET",
            data:{
                username:username,
                password:password,
            },
            success: function(resp){
                console.log(resp);
                if(resp.result === "success")
                {
                    location.reload();          //进行刷新,以便调用登录逻辑
                }else{
                    outer.$login_error_message.html(resp.result);
                }
            }
        });

    }


网站公告

今日签到

点亮在社区的每一天
去签到