网络编程
位置:首页>> 网络编程>> Python编程>> Django实现简单登录的示例代码

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

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

标签:Django,登录
目录
  • 创建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

0
投稿

猜你喜欢

  • 1、XML 是什么?XML仅仅是一种数据存放格式,这种格式是一种文本(虽然XML规范中也提供了存放二进制数据的解决方案)。事实上有很多文本格
  • 本教程中将详细阐述传统的图形设计元素是如何应用在现代(2.0时代)的页面设计中的,然后我将解释为什么它们能流行开来,以及如何、何时、在哪里使
  • python启用多线程后,调用exit出现无法退出的情况,原因是exit会抛出Systemexit的异常,如果在exit外围调用了try,就
  • 第一种:获取不带后缀的文件名,直接上代码:就是直接用basename()函数就可以返回路径中的文件名部分,其语法是“basename(pat
  • 这个收藏本站、设为首页代码相信每个网站都会用到,这么常用的代码,网络上流行的一般是很多年前的代码版本,只有兼容IE,对其它浏览器没有考虑,下
  • 本文实例讲述了Python pymongo模块常用操作。分享给大家供大家参考,具体如下:环境:pymongo3.0.3,python3以下是
  • 在编写程序时,数据库结构会经常变化,所以经常需要编写一些数据库脚本,编写完成后需发往现场执行,如果已经存在或者重复执行,有些脚本会报错,所以
  • SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL。其中用于定义数据的结构,比如 创建
  • 设计页面时,经常会从一个页面打开一个子窗口以供浏览者查看。通常,这种子窗口中的内容一经浏览者看过,对于浏览者而言就不再需要,而他们常常会忘记
  • 装饰器的基础使用(装饰带参函数)def decorator(func):    def inner(info): &nb
  • 一、前言今天我们将用Python来创建一个属于自己的音乐播放器。为此,我们将使用三个软件包:Tkinter:用于UIPygame:播放音乐o
  • 许多人利用Session变量来开发ASP(Active Server Pages)。这些变量与任何编程语言中通用的变量非常相似,并且具有和通
  • 这个间歇性向上滚动js代码很适合做广告展示,友情链接等等。与平常的无缝向上连续滚动不同的是它每滚动一个就会停顿一会儿。<!DOCTYP
  • <?php // fix 404 pages: header('HTTP/1.1 200 OK'); // set 4
  • 一、什么是Python类?python中的类是创建特定对象的蓝图。它使您可以以特定方式构建软件。问题来了,怎么办?类允许我们以一种易于重用的
  • 《色彩解答》系列之一 色彩层次《色彩解答》系列之二 色彩比例我们知道在设计中有很多对比,大小的对比,形状的对比,长短的对比,多少的对比,这些
  • 五花八门的SQL产品多得要命,或许你早顾不得其它甩开袖子就动手干了。但你要同时采用ASP和SQL的话就可能会头晕。MySQL、SQL Ser
  • RSS是 Really Simple Syndication的缩写(对rss2.0而言,是这三个词的缩写,对rss1.0而言则是RDF Si
  • 项目中需要FusionCharts图表显示双Y轴,好像FCF_MSLine.swf不可以这样,只能显示一个Y轴,多条线, 找了一下,用MSC
  •  代码如下:---ntext数据类型字符替换 create table tt ( sid INT IDENTITY(1,1), c
手机版 网络编程 asp之家 www.aspxhome.com