• Django学习路35_视图使用方法(复制的代码) + 简单总结


    from django.shortcuts import render,redirect
    from django.http import HttpResponse,JsonResponse
    from datetime import datetime,timedelta
    # Create your views here.
    
    
    # request就是HttpRequest类型的对象
    # request包含浏览器请求的信息
    def index(request):
        '''首页'''
        # num = 'a' + 1
        # print(request.path)
        response = render(request, 'booktest/index.html')
        response.write('hello')
        return response
    
    
    def show_arg(request, num):
        return HttpResponse(num)
    
    
    def login(request):
        '''显示登录页面'''
        # 判断用户是否登录
        if request.session.has_key('islogin'):
            # 用户已登录, 跳转到首页
            return redirect('/index')
        else:
            # 用户未登录
            # 获取cookie username
            if 'username' in request.COOKIES:
                # 获取记住的用户名
                username = request.COOKIES['username']
            else:
                username = ''
    
            return render(request, 'booktest/login.html', {'username':username})
    
    
    def login_check(request):
        '''登录校验视图'''
        # request.POST 保存的是post方式提交的参数 QueryDict
        # request.GET 保存是get方式提交的参数
        print(request.method)
        # 1.获取提交的用户名和密码
        username = request.POST.get('username')
        password = request.POST.get('password')
        remember = request.POST.get('remember')
        # 2.进行登录的校验
        # 实际开发:根据用户名和密码查找数据库
        # 模拟: smart 123
        if username == 'smart' and password == '123':
            # 用户名密码正确,跳转到首页
            response = redirect('/index')
    
            # 判断是否需要记住用户名
            if remember == 'on':
                # 设置cookie username,过期时间1周
                response.set_cookie('username', username, max_age=7*24*3600)
    
            # 记住用户登录状态
            # 只有session中有islogin,就认为用户已登录
            request.session['islogin'] = True
    
            # 返回应答
            return response
        else:
            # 用户名或密码错误,跳转到登录页面
            return redirect('/login')
    
    
    # /test_ajax
    def ajax_test(request):
        '''显示ajax页面'''
        return render(request, 'booktest/test_ajax.html')
    
    
    def ajax_handle(request):
        '''ajax请求处理'''
        # 返回的json数据 {'res':1}
        return JsonResponse({'res':1})
    
    
    # /login_ajax
    def login_ajax(request):
        '''显示ajax登录页面'''
        return render(request, 'booktest/login_ajax.html')
    
    
    # /login_ajax_check
    def login_ajax_check(request):
        '''ajax登录校验'''
        # 1.获取用户名和密码
        username = request.POST.get('username')
        password = request.POST.get('password')
    
        # 2.进行校验,返回json数据
        if username == 'smart' and password == '123':
            # 用户名密码正确
            return JsonResponse({'res':1})
            # return redirect('/index') ajax请求在后台,不要返回页面或者重定向
        else:
            # 用户名或密码错误
            return JsonResponse({'res':0})
    
    
    # /set_cookie
    def set_cookie(request):
        '''设置cookie信息'''
        response = HttpResponse('设置cookie')
        # 设置一个cookie信息,名字为num, 值为1
        response.set_cookie('num', 1, max_age=14*24*3600)
        # response.set_cookie('num2', 2)
        # response.set_cookie('num', 1, expires=datetime.now()+timedelta(days=14))
        # 返回response
        return response
    
    
    # /get_cookie
    def get_cookie(request):
        '''获取cookie的信息'''
        # 取出cookie num的值
        num = request.COOKIES['num']
        return HttpResponse(num)
    
    
    # /set_session
    def set_session(request):
        '''设置session'''
        request.session['username'] = 'smart'
        request.session['age'] = 18
        # request.session.set_expiry(5)
        return HttpResponse('设置session')
    
    
    # /get_session
    def get_session(request):
        '''获取session'''
        username = request.session['username']
        age = request.session['age']
        return HttpResponse(username+':'+str(age))
    
    
    # /clear_session
    def clear_session(request):
        '''清除session信息'''
        # request.session.clear()
        request.session.flush()
        return HttpResponse('清除成功')

    urls.py 内容
    
    from django.conf.urls import url
    from booktest import views
    
    urlpatterns = [
        url(r'^index$', views.index), # 首页
        # url(r'^showarg(d+)$', views.show_arg), # 捕获url参数:位置参数
        url(r'^showarg(?P<num>d+)$', views.show_arg),# 捕获url参数:关键字参数
    
        url(r'^login$', views.login), # 显示登录页面
        url(r'^login_check$', views.login_check), # 用户登录校验
    
        url(r'^test_ajax$', views.ajax_test), # 显示ajax页面
        url(r'^ajax_handle$', views.ajax_handle), # ajax处理
    
        url(r'^login_ajax$', views.login_ajax), # 显示ajax登录页面
        url(r'^login_ajax_check$', views.login_ajax_check), # ajax登录校验
    
        url(r'^set_cookie$', views.set_cookie), # 设置cookie
        url(r'^get_cookie$', views.get_cookie), # 获取cookie
    
        url(r'^set_session$', views.set_session), # 设置session
        url(r'^get_session$', views.get_session), # 获取session
        url(r'^clear_session$', views.clear_session), # 清除session
    ]

    展示参数
    
    def show_arg(request, num):
        return HttpResponse(num)
    
    
    判断用户是否登录
    
    request.session.has_key('islogin')
    
    重定向
    
    return redirect('/index')
    
    获取cookie
    
    request.COOKIES
    
    
    获取用户提交的用户名和密码
    
    username = request.POST.get('username')
    password = request.POST.get('password')
    
    判断是否需要记住
    
    remember = request.POST.get('remember')
            if remember == 'on':
                # 设置cookie username,过期时间1周
                response.set_cookie('username', username, max_age=7*24*3600)
    
    
    只要 session中有islogin,就认为用户已登录
    
    request.session['islogin'] = True
    
    返回 JSON 数据
    
    def ajax_handle(request):
        '''ajax请求处理'''
        # 返回的json数据 {'res':1}
        return JsonResponse({'res':1})
    
    判断是否登录
    
    def login_ajax_check(request):
        '''ajax登录校验'''
        # 1.获取用户名和密码
        username = request.POST.get('username')
        password = request.POST.get('password')
    
        # 2.进行校验,返回json数据
        if username == 'smart' and password == '123':
            # 用户名密码正确
            return JsonResponse({'res':1})
            # return redirect('/index') ajax请求在后台,不要返回页面或者重定向
        else:
            # 用户名或密码错误
            return JsonResponse({'res':0})
    
    
    设置 cookie 信息
    
    response.set_cookie('num', 1, max_age=14*24*3600)
    
    获取 cookie 信息
    
    num = request.COOKIES['num']
    
    设置 session 信息
    request.session['username'] = 'smart'
    
    
    def set_session(request):
        '''设置session'''
        request.session['username'] = 'smart'
        request.session['age'] = 18
        # request.session.set_expiry(5)
        return HttpResponse('设置session')
    
    获取 session 
    
    age = request.session['age']
    
    清除 session 信息
    
    request.session.flush()
    
    def clear_session(request):
        '''清除session信息'''
        # request.session.clear()
        request.session.flush()
        return HttpResponse('清除成功')

    2020-05-20

     

  • 相关阅读:
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    初识面向对象编程(Object Oriented Programming,OOP)
    详述WebLogic反序列化远程命令执行漏洞的处理过程,云和恩墨技术通讯精选
    分布式监控系统zipkin介绍
    Uncaught TypeError: Cannot set property 'render' of undefined
    python PIL的Image.resize()和Image.thumbnail()函数的区别
    dump 组合索引存储null值
    史上最全MySQL锁机制
    Dump 组合索引
  • 原文地址:https://www.cnblogs.com/hany-postq473111315/p/12922362.html
Copyright © 2020-2023  润新知