一个小的登录查看的session案例
2018-03-02 09:45
190 查看
需求
1,创建两个页面,一个是登录页面,一个是登录成功后,显示个人信息的页面2,登录页面是基于session
3、数据表(男生,女生,男女关系)
4、登录页(用户名,密码,性别,一周免登陆)
5、内容页,异性列表和有关系的列表
设计
views的改变
把登陆的代码和关系内容的代码分开,所以创建了views目录,并且把不同的内容写到了不同的模块中。如图![](http://i2.51cto.com/images/blog/201803/01/6467321554ddf6c7cf5a802bb911b928.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
各个py文件代码
from django.shortcuts import render,HttpResponse,redirect from app_01 import models def acc_login(request): if request.method == "GET": return render(request,'acclogin.html') else: user = request.POST.get('username') gender = request.POST.get('gender') pwd = request.POST.get('password') rmb = request.POST.get('rmb') print(user,gender,pwd,rmb) if gender == "1": obj = models.AccBoy.objects.filter(username=user,password=pwd).first() else: obj = models.AccGirl.objects.filter(username=user,password=pwd).first() if not obj: return render(request,'acclogin.html',{'msg':'用户名或密码错误'}) else: request.session['user_info'] = {'user_d':obj.id,'gender':gender,'rmb':rmb,'user':user,'nickname':obj.nickname} return redirect('/accindex.html') def acclogout(request): if request.session.get('user_info'): request.session.clear() return redirect('/acclogin.html')
from django.shortcuts import render,redirect,HttpResponse from app_01 import models def accindex(requtst): if not requtst.session.get('user_info'): return redirect('/acclogin.html') else: gender = requtst.session.get("user_info").get('gender') if gender == '1': user_list = models.AccGirl.objects.all() else: user_list = models.AccBoy.objects.all() return render(requtst,'accindex.html',{'user_list':user_list})
html代码
accindex<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>accindex</title> </head> <body> <h2>当前用户:{{ request.session.user_info.nickname }}</h2> <p><a href="/acclogin.html">注销用户</a></p> <h2>用户列表</h2> <hr> <ul> {% for item in user_list %} <li>{{ item.username }}</li> {% endfor %} </ul> </body> </html>
acclogin代码
<form action="/acclogin.html" method="post"> {% csrf_token %} <p><input type="text" name="username">用户名</p> <p><input type="password" name="password">密码</p> <input type="radio" name="gender" value="1">男 <input type="radio" name="gender" value="2">女 <input type="checkbox" value="11" name="rmb" />一周内免登陆 <p><input type="submit" value="提交"></p>{{ msg }} </form>
related_name知识点
![](http://i2.51cto.com/images/blog/201803/02/25013d3f2edc0528dc1e2749591cb4b4.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201803/02/7cdc3426d70d6af4258a16c954faa3f4.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
from django.db import models class UserInfo(models.Model): nickname = models.CharField(max_length=32) username = models.CharField(max_length=32) password = models.CharField(max_length=64) gender_choices = ( (1,'男'), (2,'女'), ) gender = models.IntegerField(choices=gender_choices) m = models.ManyToManyField('UserInfo') """ 1 女 2 女 3 女 4 男 5 男 a1 = 2 a2 = 5 """ # related_query_name # obj对象男.b_set.all() # obj对象女.a_set.all() # related_name # obj对象男.a.all() # obj对象女.b.all() # class U2U(models.Model): # g = models.ForeignKey('UserInfo',related_name='boys') # b = models.ForeignKey('UserInfo',related_name='girls') # U2U.objects.create(g_id=a1,b_id=a2) # related_query_name,related_name # class UserType(models.Model): # title = models.CharField(max_length=32) # # class User(models.Model): # username = models.CharField(max_length=32) # ut = models.ForeignKey('UserType',related_query_name='xxxx') # 反向: # related_name='xxxx' # user_set ==> xxxx # related_query_name='xxxx' # user_set ==> xxxx_set # FK自关联 class Comment(models.Model): """ 评论表 """ news_id = models.IntegerField() # 新闻ID content = models.CharField(max_length=32) # 评论内容 user = models.CharField(max_length=32) # 评论者 reply = models.ForeignKey('Comment',null=True,blank=True,related_name='xxxx') """ 新闻ID reply_id 1 1 别比比 root null 2 1 就比比 root null 3 1 瞎比比 shaowei null 4 2 写的正好 root null 5 1 拉倒吧 由清滨 2 6 1 拉倒吧1 xxxxx 2 7 1 拉倒吧2 xxxxx 5 """ """ 新闻1 别比比 就比比 - 拉倒吧 - 拉倒吧2 - 拉倒吧1 瞎比比 新闻2: 写的正好 """
# def test(request): # # models.U2U.objects.create(b_id=2,g_id=6) # # models.U2U.objects.create(b_id=1,g_id=6) # # models.U2U.objects.create(b_id=1,g_id=4) # # models.U2U.objects.create(b_id=1,g_id=5) # # # boy = models.UserInfo.objects.filter(gender=1,id=2).first() # # girl = models.UserInfo.objects.filter(gender=2,id=6).first() # # models.U2U.objects.create(b=boy,g=girl) # # # UserInfo对象 # # xz = models.UserInfo.objects.filter(id=1).first() # # # 和徐峥有关系的所有信息:U2U列表[U2U对象,2U对象,2U对象,] # # result = xz.girls.all() # # for u in result: # # # U2U对象 # # print(u.g.nickname) # # # 查男生 # # xz = models.UserInfo.objects.filter(id=1).first() # # u = xz.m.all() # # for row in u: # # print(row.nickname) # # 查女神 # # xz = models.UserInfo.objects.filter(id=4).first() # # v = xz.userinfo_set.all() # # for row in v: # # print(row.nickname) # return HttpResponse('...')
相关文章推荐
- Rails实现一个blog项目02-登录功能和session的实现
- 通过SessionID和用户名来保证同一个用户不能同时登录
- JSP开发:有关session的登录注销的一个小例子
- 实现session登陆时间的验证,验证用户登录页面的一个监听器
- Session案例 用户登录
- 通过Session案例分析一次性验证码登录
- spring security(七) session 并发,一个用户在线后其他的设备登录此用户失败
- 通过SessionID和用户名来保证同一个用户不能同时登录
- 一个查看session内容的函数
- [Java][Spring][scurity]同步session控制,防止一个用户多次登录
- 登录和注销、基于Session的购物车案例、验证码的使用、防止表单重复提交
- 使用jsp首先的登录小案例,其中使用了session技术
- 前段时间,接手一个项目使用的是原始的jdbc作为数据库的访问,发布到服务器上在运行了一段时间之后总是会出现无法访问的情况,登录到服务器,查看tomcat日志发现总是报如下的错误。 Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected est
- node.js---study1 实现一个简单应用,登录,session
- 【Node.js-8】一个简单的登录案例
- 【一天一个shell命令】好管家--查看当前登录用户-w
- 通过SessionID和用户名来保证同一个用户不能同时登录
- 通过SessionID和用户名来保证同一个用户不能同时登录
- 如何查看一个session使用了多少undo
- Session案例之用户登录、会话管理总结