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 里面 , 不然到时候会报错说找不到的
创建templates目录,来存放html,js,css等文件,在setting文件下 TEMPLATES 配置templates的文件路径 'DIRS': [os.path.join(BASE_DIR, 'templates')],
最后大致的目录结构就是这样了
使用模型的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
加载静态文件
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/ 路径是可以直接在浏览器上操作数据库的
提交
表单提交
后台判断登录是否成功
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
猜你喜欢
- 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