当前位置: 首页 > news >正文

Django(7)-项目实战-发布会管理

登录功能

模板页面

sign/templates/index.html

<!DOCTYPE html>
<html>
<head><title>Login Page</title>
</head>
<body><h1>发布会管理</h1><form action="/login/" method="post"><label for="username">Username:</label><input type="text" id="username" name="username" required><br><br><label for="password">Password:</label><input type="password" id="password" name="password" required><br><br><button id="btn" type="submit">登录</button>{% csrf_token %}</form>
</body></html>

备注:

 CSRF verification failed. Request aborted.

 表格需要加一个 {% csrf_token %} 的标签。csrf 全称是 Cross Site Request Forgery。这是 Django 提供的防止伪装提交请求的功能。POST 方法提交的表格,必须有此标签。

再次使用POST请求,可以看到客户端提交带有一个token值

 

 登录视图

from django.http import HttpResponse, Http404
from django.shortcuts import render# Create your views here.
def index(request):return render(request,"index.html")def login(request):if request.method=='POST':username=request.POST.get("username",'')password=request.POST.get("password",'')if username=='admin' and password=="admin123":return HttpResponse("登录成功")else:return render(request,'index.html',context={'error':'username or password error!'})

向服务器提交请求时,服务器可以通过request获取用户提交值

如获取POST请求中提交的name为username的值

<input type="text" id="username" name="username" required><br><br>
request.POST["username"]  

或者 request.POST.get('username','')

获取请求名称:request.method 

这里用返回了一个字符串

return HttpResponse("登录成功")

 事件管理

模板页面

sign/templatesevent_manage.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Event Manage Page</title>
</head>
<body>
<h1>嗨 {{user}} 欢迎</h1></body>
</html>

视图函数

from django.http import HttpResponse, Http404,HttpResponseRedirect
from django.shortcuts import render# Create your views here.
def index(request):return render(request,"index.html")def login(request):if request.method=='POST':username=request.POST.get("username",'')password=request.POST.get("password",'')if username=='admin' and password=="admin123":response=HttpResponseRedirect('/event_manage/')response.set_cookie('user',username,3600)return responseelse:return render(request,'index.html',context={'error':'username or password error!'})def event_manage(request):username=request.COOKIES.get('user','')return render(request,'event_manage.html',{"user":username})

httpresponserediect为重定向,登录后页面被重定向至实践管理页面

 

 

这里采用response.set_cookie方法为客户端设置了cookie user=username

使用request.COOKIES.get()方法获取到客户端访问时带的cookie。

如果想给模板传值,需要在render第三个参数提供字典,字段名:值,

在模板中采用双引号{{字段名}}读取返回值。

也可以使用session

response.session["user"]=username

 

 

要用sesssion需要创建django自带的数据表session

 控制台执行python manage.py migrate

 重新登陆,可以看到设置的sessionid

 使用django认证

创建一个admin用户,这里用的是django自带的管理员账号功能。

 运行项目,访问http://127.0.0.1:8000/admin

使用创建的账号登录,并创建一个user

 

 修改登录函数使用django的认证

 输入正确账号密码可以登录,输出不存在账号密码登录失败。

设置视图仅登录后可用

设置装饰loginrequired后,直接访问视图会报错

 

 

http://www.lryc.cn/news/143142.html

相关文章:

  • Hbase-技术文档-java.net.UnknownHostException: 不知道这样的主机。 (e64682f1b276)
  • OpenCV + CLion在windows环境下使用CMake编译, 出现Mutex相关的错误的解决办法
  • 华为质量管理:从产品质量到用户体验,Kano模型成为新方向
  • 正则表达式学习笔记
  • 构建数据可视化(基于Echarts,python)
  • 【2023最新版】R安装(直接+Anaconda)及使用(Pycharm配置R)教程
  • opencv 案例实战02-停车场车牌识别SVM模型训练及验证
  • Vue实例挂载的过程
  • dvwa xss通关
  • AD如何进行汉化
  • 【JUC基础】JUC入门基础
  • 自然语言处理: 第十章GPT的API使用
  • docker使用harbor进行镜像仓库管理演示以及部分报错解决
  • 【精算研究01/10】 计量经济学的性质和范围
  • 【python知识】用 Tkinter实现“剪刀-石头-布”和“弹球游戏 ”
  • Android 绘制之文字测量
  • 基于AVR128单片机智能传送装置
  • Nexus私有仓库+IDEA配置远程推送
  • idea2023项目上传到gitee
  • 【golang】派生数据类型---指针 标识符、关键字等
  • 深度学习技术
  • TCP/IP网络江湖——物理层护江山:网络安全的铁壁防线(物理层下篇:物理层与网络安全)
  • python-数据可视化-使用API
  • 窗口看门狗
  • 开发新能源的好处
  • error: can‘t find Rust compiler
  • 全面解析MES系统中的车间退料管理
  • 探究finally代码块是否执行
  • leetcode刷题(字符串相加、包含每个查询的最小区间、模拟行走机器人、环形子数组的最大和、满足不等式的最大值、四数之和、树中距离之和)
  • Grafana reporter定时报表踩坑记录