Django实现简单登录的示例代码

作者:d粥 时间:2022-03-26 04:10:18 

目录
  • 创建django项目

  • 使用模型的url.py

  • 加载静态文件

  • 页面跳转

  • 创建数据库模型

  • 提交

    • 表单提交

    • ajax提交

创建django项目

创建项目的命令行语句: django-admin startproject newsManage

将templates文件放在模板里面,会显得更简洁一些,所以我就先创建模板啦。

命令行语句:django-admin startapp newsModel

创建好模型把模型名加到setting文件下 INSTALLED_APPS 里面 , 不然到时候会报错说找不到的

Django实现简单登录的示例代码

创建templates目录,来存放html,js,css等文件,在setting文件下 TEMPLATES 配置templates的文件路径 'DIRS': [os.path.join(BASE_DIR, 'templates')],

最后大致的目录结构就是这样了

Django实现简单登录的示例代码

使用模型的url.py

创建项目的时候会自带一个urls.py文件,是用来配置路径的,都写在一个urls里面会显得比较乱,放在模板里面就完美的解决了这个问题

路径:newsManage/newsManage/urls.py


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

在newsModel模板下创建urls.py文件 路径:newsManage/newsModel/urls.py


from django.urls import path
from . import views

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

路径:newsManage/newsModel/views.py


def login(request):
   return render(request, 'login.html')

在templates下创建login.html文件,然后写登录页面(用模板也太香了吧)
运行启动服务器 python manage.py runserver

Django实现简单登录的示例代码

加载静态文件

static就是放静态文件的像 css,js 加载静态文件也需要配置,setting最后一行加上


STATICFILES_DIRS = [     os.path.join(BASE_DIR, "static") ]

在html里面引用,需要在前面加上{% load static %}
然后就可以引用了 <link href="{% static 'css/style.css' %}" rel="external nofollow" rel="stylesheet">

页面跳转


path('/register', views.register, name='register')

像上面这个注册的url,可以通过路径 或者 name 跳转


<a class="text-primary" href="{% url 'register' %}" rel="external nofollow" >Sign up</a>

点击这个链接就可以跳转到注册页面啦

创建数据库模型

在 newsManage/newsManage/init.py 配置pymysql, 没有下载的话需要去下载pymysql


import pymysql
pymysql.install_as_MySQLdb()

路径:newsManage/newsModel/models.py(类名就是表名)


class user(models.Model):
   username = models.CharField(max_length=30)
   password = models.CharField(max_length=30)
   email = models.EmailField(unique=True, blank=False)

运行命令行,生成表结构


python manage.py migrate
python manage.py makemigrations
python manage.py migrate newsModel

数据库的表名就是 模型名_类名( newsModel_user )
admin/ 路径是可以直接在浏览器上操作数据库的

提交

表单提交

Django实现简单登录的示例代码

后台判断登录是否成功


def toLogin(request):
   if request.method == 'POST':
       username = request.POST.get("username")
       password = request.POST.get("password")
       users = user.objects.all()
       for u in users:
           if u.username == username and u.password == password:
               return redirect("home")
       context = {"msg": "用户名或密码错误!"}
       return render(request, "login.html", context)

ajax提交


data = eval("(" + data + ")"); 灰常重要,记得转换一下,不然取不到,但好像别人不用转也可以。。。。
$.ajax({
   type: 'POST',
   url: "{% url 'toLoginByAjax' %}",
   data: {
       'username': $("#username").val(),
       'password': $("#password").val()
   },
   dataType: 'text',
   success: function (data) {
       data = eval("(" + data + ")");
       if (data.code == 0){
           window.location.href = "{% url 'home' %}"
       } else {
           $(".msg").html(data.msg);
               setTimeout(function(){//定时器
               $(".msg").css("display","none");//将图片的display属性设置为none
           },3000);//设置三千毫秒即3秒
       }
   },
   error: function () {
       console.log("somewhere is wrong")
   }
 })  

def toLoginByAjax(request):
   username = request.POST.get("username")
   password = request.POST.get("password")
   users = user.objects.all()
   for u in users:
       if u.username == username and u.password == password:
           message = {"code": 0, "msg": "登陆成功!"}
           return JsonResponse(message)
   message = {"code": 400, "msg": "登陆失败,用户名或密码错误!"}
   return JsonResponse(message)

就可以成功登录到主页(home.html)啦! 🤸🏻‍♀️🤸🏻‍♀️🤸🏻‍♀️

来源:https://juejin.cn/post/7026159799662280734

标签:Django,登录
0
投稿

猜你喜欢

  • MySQL定时任务(EVENT事件)如何配置详解

    2024-01-19 08:04:12
  • python实现水印图片功能

    2021-07-04 00:45:45
  • Django使用Channels实现WebSocket的方法

    2023-12-10 16:20:05
  • Python随机函数库random的使用方法详解

    2021-06-07 16:16:23
  • Django Rest framework认证组件详细用法

    2023-02-20 09:47:08
  • PHP const定义常量及global定义全局常量实例解析

    2023-11-17 07:24:57
  • Python logging模块异步线程写日志实现过程解析

    2023-07-29 05:05:03
  • Python 语言实现六大查找算法

    2022-11-09 14:41:30
  • python自动安装pip

    2021-04-06 09:30:00
  • 一文带你搞懂Python中的pyc文件

    2022-01-25 20:01:03
  • Python学习笔记之Django创建第一个数据库模型的方法

    2024-01-14 20:46:39
  • pandas Dataframe行列读取的实例

    2021-06-11 01:00:45
  • CSS content, counter-increment 和 counter-reset详解[译]

    2009-06-02 12:51:00
  • Golang实现文件传输功能

    2023-08-05 13:50:31
  • pytorch .detach() .detach_() 和 .data用于切断反向传播的实现

    2022-01-30 21:24:56
  • PHP排序二叉树基本功能实现方法示例

    2023-07-10 04:45:53
  • python频繁写入文件时提速的方法

    2023-11-11 01:48:40
  • oracle中的ID号实现自增长的方法

    2024-01-13 13:27:26
  • 解决layui弹出层layer的area过大被遮挡的问题

    2024-04-19 09:53:20
  • Python 实现向word(docx)中输出

    2022-08-25 01:13:13
  • asp之家 网络编程 m.aspxhome.com