Django 基于session认证 小作业
基于session认证 相亲小作业
用户登录 如果男用户登录,显示女生列表
如果女用户登录,显示男生列表
"""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), ]
urls
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")
models
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=="":
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')
account.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 == "":
# 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 == "":
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})
love.py
<!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>
login.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>
index.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>
others.html
<h2>当前用户:{{ request.session.user_info.nickname }}</h2>
<a href="/logout.html">注销</a>
user_header.html
Django 基于session认证 小作业的更多相关文章
- 基于session认证 相亲小作业
基于session认证 相亲小作业 用户登录 如果男用户登录,显示女生列表 如果女用户登录,显示男生列表 urls ===========================urls========== ...
- 你还不了解基于session的授权认证吗?
前言 在漫长的开发过程中,权限认证是一个永恒不变的话题,随着技术的发展,从以前的基于sessionId的方式,变为如今的token方式.session常用于单体应用,后来由于微服务的兴起,分布式应用占 ...
- 接口测试基础——session认证和token认证
总算是把这个过程理清楚了,现在我们的思路是:what?why?How?,实际上这些个机制产生的内部逻辑是从下至上的的:遇到问题了,想办法解决,总结归纳并取名.从解决一些小问题开始生长,不断打补丁直至完 ...
- COOKIE与SESSION、Django的用户认证、From表单
一.COOKIE 与 SESSION 1.简介 1.cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. ...
- Django之验证码 + session 认证
验证码 + session认证 目录结构 . └── project ├── app01 │ ├── admin.py │ ├── apps.py │ ├── __init__.py │ ...
- 基于注解的接口限流+统一session认证
代码心得: 一个基本的做法:对于用户身份认证做到拦截器里,针对HandlerMethod进行统一拦截认证,根据方法上的注解标识,判别是否需要身份验证,并将查找出来的User实体存入ThreadLoca ...
- 基于session和token的身份认证方案
一.基于session的身份认证方案 1.方案图示 2.比较通用的鉴权流程实现如下: 在整个流程中有两个拦截器. 第一个拦截器AuthInteceptor是为了每一次的请求的时候都先去session中 ...
- 【认证与授权】2、基于session的认证方式
这一篇将通过一个简单的web项目实现基于Session的认证授权方式,也是以往传统项目的做法. 先来复习一下流程 用户认证通过以后,在服务端生成用户相关的数据保存在当前会话(Session)中,发给客 ...
- Django之Session
Django -- Seeion介绍 问: Django的session是什么? 答: Django 完全支持匿名 Session的. Session 框架允许每一个用户保存 ...
随机推荐
- python web开发-flask读取txt文件内容
某些情况下,需要读取flask网站要目录下的txt文件.但是直接在flask网站的目录下创建一个文件是无法访问的.从网站找了一些资料,最终发现通过写一个方法返回txt内容比较简单方便,不过此方法适用于 ...
- [POJ 2226] Muddy Fields
题目 Description 如何放木板保证只覆盖到 '*' 而没有覆盖到 '.' Solution (我太废了竟然想这题想了一个小时)考虑当前需要被覆盖的点 (x,y),假设有一块横着铺的木板 i ...
- Maven-09: 在线插件信息
仅仅理解如何配置使用插件是不够的.当遇到一个构建任务的时候,用户还需要知道去哪里寻找合适的插件,以帮助完成任务.找到正确的插件之后,还要详细了解该插件的配置点.由于Maven的插件非常多,而且这其中的 ...
- django初探-创建简单的博客系统(二)
上篇django初探-创建简单的博客系统(一)已经记录了Django实现博客的发布的整个过程,接下来继续说明博客标题和内容的显示. 显示博客详细 将博客内容保存到数据库还不是发布博客的终极目的,博客一 ...
- poj-1005-l tanink i need a houseboat
Description Fred Mapper is considering purchasing some land in Louisiana to build his house on. In t ...
- 关于JSP页面Property [ssid] not found on type [java.lang.String]错误的注意事项
转发于:http://blog.csdn.net/w86440044/article/details/28277177
- 关于redis数据库的简单思考
redis数据库中有以下几种数据类型: 字符串,哈希,列表,集合,有序集合 它们应用的场景如下: 字符串用法单一,用于存储一个key的值,用于一一对应的场合 列表作为数组来使用 对于哈希,特别适用于存 ...
- Hibernate之深入持久化对象
Hibernate是一个彻底的O/R Mapping 框架.之所以说彻底,是因为相对于其他的 框架 ,如Spring JDBC,iBatis 需要手动的管理SQL语句,Hibernate采用了完全 面 ...
- PHP获取短信验证码
PHP如何获取短信验证码?以下是创蓝253短信平台下的PHP接口代码案例: <?php header("Content-type:text/html; charset=UTF-8& ...
- Binary Tree Xorder Traversal
 * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeN ...