21Django云笔记项目4(完成网站首页)

网站首页准备:

1创建应用:

D:\PycharmProjects\tyj_note>python manage.py startapp index

2注册应用:

INSTALLED_APPS = [
    'index',
]

3在index应用下创建文件夹和文件:templates/index/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{% if request.session.username %}
    <p>欢迎{{ request.session.username }}</p>
    <p><a href="">退出登录</a></p>
    <p><a>进入我的笔记</a></p>

{% else %}

    {% if request.COOKIES.username %}
    <p>欢迎{{ request.COOKIES.username }}</p>
    <p><a href="">退出登录</a></p>
    <p><a>进入我的笔记</a></p>
    {% else %}
        <p><a href="/user/login">登录</a></p>
        <p><a href="/user/reg">注册</a></p>
    {% endif %}

{% endif %}
</body>
</html>

4编写主路由:

path('index/',include('index.urls')),

5编写子路由

from django.urls import path
from .views import index_view
urlpatterns = [
    path('index',index_view),
]

6访问测试:

http://127.0.0.1:8000/index/index

7把user应用里面的注册视图函数和登录视图函数内的return HttpResponse('已登录')替换成302跳转首页

#return HttpResponse(' 注册成功')
 return HttpResponseRedirect('/index/index')
 
 #return HttpResponse('已登陆')
  return HttpResponseRedirect('/index/index')
  
 #resp = HttpResponse('--登录成功--')
  resp = HttpResponseRedirect('/index/index')

完整的视图如下:

def login_view(request):
    if request.method == 'GET':
        #检查登录状态
        if request.session.get('username') and request.session.get('uid'):
            #return HttpResponse('已登陆')
            return HttpResponseRedirect('/index/index')
        #如果session没进去就检查cookies
        c_uname = request.COOKIES.get('uname')
        c_uid = request.COOKIES.get('uid')
        if c_uname and c_uid:
            #回写session
            request.session['username'] = c_uname
            request.session['uid'] = c_uid
            return HttpResponse('已登录')
        return render(request,'user/login.html')
    elif request.method == 'POST':
        #先查用户是不是存在
        username = request.POST.get('userNname')
        password = request.POST.get('password')
        try:
            user = User.objects.get(username=username)
        except Exception as e:
            print('--login user error %s'%(e))
            return HttpResponse('用户名或密码错误')
        #用户存在再比对密码
        m = hashlib.md5()
        m.update(password.encode())
        if m.hexdigest() != user.password:
            return HttpResponse('用户名或密码错误')
        #如果密码比对成功,那么就记录会话状态
        request.session['username'] = username
        request.session['uid'] = user.id
        #resp = HttpResponse('--登录成功--')
        resp = HttpResponseRedirect('/index/index')
        #判断用户是否勾选了记住用户名复选框,如果选了,我们就让cookies存储uid和username,时间为3天
        if 'remember' in request.POST:
            resp.set_cookie('username', username, 3600*24*3)
            resp.set_cookie('uid',user.id,3600*24*3)
        return resp

 

posted @ 2021-12-03 15:07  linuxTang  阅读(66)  评论(0)    收藏  举报