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
投稿

猜你喜欢

  • 基于Python实现图片一键切割九宫格的工具

    2022-07-05 00:22:31
  • python如何快速生成时间戳

    2022-10-26 08:15:41
  • 使用mysqli完成事务处理

    2011-03-29 15:49:00
  • Python Web框架Flask中使用百度云存储BCS实例

    2023-09-14 21:53:44
  • 如何判断用户在某一页面逗留了多长时间?

    2010-01-18 20:48:00
  • Python 网络爬虫--关于简单的模拟登录实例讲解

    2022-11-21 16:52:55
  • MySql数据库基本命令集会

    2011-08-05 18:43:23
  • 详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)

    2023-09-06 14:34:52
  • ASP编程中使用数组方法实例讲解

    2008-02-15 08:25:00
  • 走中国特色的网站重构道路

    2010-04-08 16:10:00
  • Python爬取世界杯热搜榜并制作脚本自动发送信息到邮箱的过程

    2021-01-21 20:35:53
  • PHP文件运行步骤以及数据库的连接代码

    2023-05-25 08:32:51
  • 教你在SQL Server 2000数据库中使用分区

    2008-11-25 11:55:00
  • CSS控制字体效果的思考

    2011-06-14 09:44:02
  • 启动targetcli时遇到错误解决办法

    2023-03-20 05:59:43
  • Python趣味挑战之实现简易版音乐播放器

    2021-06-25 15:13:43
  • SQLServer与服务器连接时出错的解决方案

    2009-06-28 14:35:00
  • python的urllib模块显示下载进度示例

    2023-06-13 17:06:31
  • WEB2.0网页制作标准教程(11)不用表格的菜单

    2008-02-19 19:36:00
  • Bootstrap编写导航栏和登陆框

    2023-08-16 19:08:42
  • asp之家 网络编程 m.aspxhome.com