1. 程式人生 > >Django 基於session認證 小作業

Django 基於session認證 小作業

女生 ons not 密碼 作業 param http clas type

基於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=="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)
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 == "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})
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認證 小作業