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

浙公网安备 33010602011771号