基于session认证 相亲小作业
基于session认证 相亲小作业
用户登录 如果男用户登录,显示女生列表
如果女用户登录,显示男生列表
urls
===========================urls=========================================================== """s4day74 URL Configuration The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/1.11/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
""" from django.conf.urls import url
from django.contrib import admin
from app01.views1 import love
from app01.views1 import account
urlpatterns = [
url(r'^admin/', admin.site.urls),
# url(r'^test.html$',views.test), # url(r'^login/', views.login), # url(r'^index/', views.index), # url(r'^test.html$', love.test), url(r'^login.html$', account.login),
url(r'^index.html$', love.index),
url(r'^logout.html$', account.logout),
url(r'^others.html$', love.others), ]
models
=============================models===============================================
from django.db import models # Create your models here. # class UserInfo(models.Model): class Boy(models.Model):
nickname = models.CharField(max_length=32)
username = models.CharField(max_length=32)
password = models.CharField(max_length=64) class Girl(models.Model):
nickname = models.CharField(max_length=32)
username = models.CharField(max_length=32)
password = models.CharField(max_length=64) class B2G(models.Model):
b = models.ForeignKey(to="Boy",to_field="id")
g = models.ForeignKey(to="Girl",to_field="id")
account.py
=============================account.py===============================================
from django.shortcuts import render,HttpResponse,redirect
from app01 import models def login(request):
if request.method == "GET":
return render(request, 'login.html') else:
user=request.POST.get("username")
pwd=request.POST.get("password")
gender=request.POST.get("gender")
rmb=request.POST.get("rmb")
#性别判断 if gender=="1":
obj=models.Boy.objects.filter(username=user,password=pwd).first()
else:
obj=models.Girl.objects.filter(username=user,password=pwd).first()
if not obj:
return render(request, "login.html", {"msg": "用户名或密码错误"}) else:
#session里面设置值,可以嵌套 相当于归类 一个key对应一条条信息 # request.session['user_id']=obj.id # request.session["gender"]=gender # request.session["username"]=user if rmb:
request.session.set_expiry(15)
request.session['user_info']={'user_id':obj.id,'gender':gender,'username':user,'nickname':obj.nickname}
return redirect("/index.html") #跳到后台管理 def logout(request):
if request.session.get("user_info"):
request.session.clear()
return redirect('/login.html')
love.py
============================= love.py===============================================
from django.shortcuts import render,HttpResponse,redirect
from app01 import models
from utils.pager import PageInfo def index(request):
if not request.session.get("user_info"):
return redirect("/login.html")
else:
#到session里面获取性别
gender=request.session.get("user_info").get('gender')
if gender == "1":
# user_list=models.Girl.objects.all()
all_count = models.Girl.objects.all().count()
page_info = PageInfo(request.GET.get('page'), all_count, 10, '/boy.html', 11)
user_list = models.Girl.objects.all()[page_info.start():page_info.end()]
return render(request, 'index.html', {'user_list': user_list, 'page_info': page_info})
else:
# user_list=models.Boy.objects.all()
all_count = models.Boy.objects.all().count()
page_info = PageInfo(request.GET.get('page'), all_count, 10, '/boy.html', 11)
user_list = models.Boy.objects.all()[page_info.start():page_info.end()]
return render(request, 'index.html', {'user_list': user_list, 'page_info': page_info}) # return render(request,"index.html",{'user_list':user_list}) def others(request):
"""
获取与当前用户有关的异形
:param request:
:return:
"""
current_user_id=request.session.get('user_info').get("user_id")
gender=request.session.get("user_info").get("gender")
if gender == "1":
user_list=models.B2G.objects.filter(b_id=current_user_id).values('g__nickname')
else:
user_list=models.B2G.objects.filter(g_id=current_user_id).values('b__nickname')
return render(request,'others.html',{'user_list':user_list})
login.html
============================= login.html===============================================
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% include 'user_header.html' %}
<h1>有关系的异性列表</h1>
<ul>
{% for row in user_list%}
{% if row.g__nickname %}
<li>{{ row.g__nickname }}</li>
{% else %}
<li>{{ row.b__nickname }}</li>
{% endif %}
{% endfor %}
</ul>
</body>
</html>
index.html
============================= index.html===================================================================================================================
!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="/static/plugins/bootstrap-3.3.7-dist/css/bootstrap.css"> </head> <body>
{# <h2>当前用户:{{ request.session.user_info.nickname }}</h2>#} {# <a href="/logout.html">注销</a>#} {% include 'user_header.html' %}
<h3>异性列表</h3> <a href="/others.html">查看和我有关的异形</a> <table class="table table-striped table-bordered table table-hover table table-condensed"> <tr> <th>ID</th> <th>姓名</th> <th>密码</th> </tr>
{% for row in user_list %}
<tr> <td>{{ row.id }}</td> <td>{{ row.nickname }}</td> <td>{{ row.password }}</td> </tr>
{% endfor %} </table> <nav aria-label="Page navigation"> <ul class="pagination">
{{ page_info.pager|safe }}
</ul> </nav> </body> </html>
others.html
============================= others.html====================================
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% include 'user_header.html' %}
<h1>有关系的异性列表</h1>
<ul>
{% for row in user_list%}
{% if row.g__nickname %}
<li>{{ row.g__nickname }}</li>
{% else %}
<li>{{ row.b__nickname }}</li>
{% endif %}
{% endfor %}
</ul>
</body>
</html>
user_header.html
<h2>当前用户:{{ request.session.user_info.nickname }}</h2> <a href="/logout.html">注销</a>
基于session认证 相亲小作业的更多相关文章
- Django 基于session认证 小作业
基于session认证 相亲小作业 用户登录 如果男用户登录,显示女生列表 如果女用户登录,显示男生列表 """s4day74 URL Configuration Th ...
- 你还不了解基于session的授权认证吗?
前言 在漫长的开发过程中,权限认证是一个永恒不变的话题,随着技术的发展,从以前的基于sessionId的方式,变为如今的token方式.session常用于单体应用,后来由于微服务的兴起,分布式应用占 ...
- 接口测试基础——session认证和token认证
总算是把这个过程理清楚了,现在我们的思路是:what?why?How?,实际上这些个机制产生的内部逻辑是从下至上的的:遇到问题了,想办法解决,总结归纳并取名.从解决一些小问题开始生长,不断打补丁直至完 ...
- 基于注解的接口限流+统一session认证
代码心得: 一个基本的做法:对于用户身份认证做到拦截器里,针对HandlerMethod进行统一拦截认证,根据方法上的注解标识,判别是否需要身份验证,并将查找出来的User实体存入ThreadLoca ...
- 基于session和token的身份认证方案
一.基于session的身份认证方案 1.方案图示 2.比较通用的鉴权流程实现如下: 在整个流程中有两个拦截器. 第一个拦截器AuthInteceptor是为了每一次的请求的时候都先去session中 ...
- 【认证与授权】2、基于session的认证方式
这一篇将通过一个简单的web项目实现基于Session的认证授权方式,也是以往传统项目的做法. 先来复习一下流程 用户认证通过以后,在服务端生成用户相关的数据保存在当前会话(Session)中,发给客 ...
- Java实现基于token认证
随着互联网的不断发展,技术的迭代也非常之快.我们的用户认证也从刚开始的用户名密码转变到基于cookie的session认证,然而到了今天,这种认证已经不能满足与我们的业务需求了(分布式,微服务).我们 ...
- 第八节:常见安全隐患和传统的基于Session和Token的安全校验
一. 常见的安全隐患 1. SQL注入 常见的案例: String query = "SELECT * FROM T_User WHERE userID='" + Request ...
- Session认证机制与JWT认证机制
一.什么是身份认证? 身份认证(Authentication)又称"身份验证"."鉴权",是指通过一定的手段,完成对用户身份的确认.日常生活中的身份认证随处可见 ...
随机推荐
- three.js 实现全景以及优化(2)
继昨天全景实现后,再做了一个全景图切换实验; code:https://github.com/Thinkia/threejs_/blob/master/test/test1-panorama/inde ...
- 51ak带你看MYSQL5.7源码3:修改代码实现你的第一个Mysql版本
从事DBA工作多年 MYSQL源码也是头一次接触 尝试记录下自己看MYSQL5.7源码的历程 目录: 51ak带你看MYSQL5.7源码1:main入口函数 51ak带你看MYSQL5.7源码2:编译 ...
- [ZJOI2007] 矩阵游戏
Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两 ...
- 走近webpack(1)--多入口及devServer的使用
上一篇文章留下了一些问题,如果你没看过上一篇文章,可以在我的博客里查找,或者直接从这篇文章开始也是没问题的. const path = require('path'); module.exports= ...
- 【pyHook】 监测键盘鼠标事件等
[pyHook] pyHook是一个用来进行键盘.鼠标等层面事件监控的库.这个库的正常工作需要pythoncom等操作系统的API的支持.首先来说说如何安装. 直接pip install pyHook ...
- 设计模式之 原型模式详解(clone方法源码的简单剖析)
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 原型模式算是JAVA中最简单 ...
- Suricata 之IPS模式
IPS 1.Suricata 本身是不具有拦截功能的,想要让它拦截包需要配合 iptables 使用. 首先要确定安装的suricata是否支持IPS模式,如果在安装编译的时候没有启用IPS模式,NF ...
- Java基础学习笔记八 Java基础语法之接口和多态
接口 接口概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”.接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成.这样将功能的定义 ...
- [福大软工] W班 软件产品案例分析
作业要求 https://edu.cnblogs.com/campus/fzu/FZUSoftwareEngineering1715W/homework/1300 评分细则 第一部分 调研,评测 (3 ...
- Week04-面向对象设计与继承
1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 is a关系 覆盖 Object 超级父类 继承 抽象类 多态 重载 static super private public p ...