首页 > 代码库 > OJ2.0修改完善userInfo的跳转
OJ2.0修改完善userInfo的跳转
这次主要要实现的内容是对于和user相关的信息点击UserID能够跳转到userInfo页面:
1:查看个人信息页面:
在个人信息页面有两列信息,一列是当前用户的信息,一列是需要用来比较的用户的信息。在执行跳转的时候原则是:把点击的用户的信息放在右边那一列在页面中使用的
user对象是other。而把当前用户的信息放在左边一列,在页面中对应的是user。
2:执行修改:
2.1:测试
首先,为了不影响OJ的运行,我建立了一个userInfo的拷贝版user和userInfo的url的拷贝版user作为测试文件。
首先执行user页面的url可以执行
2.2:修改链接和view
原来已经存在的userInfo的页面的url是没有参数的传递的,我们需要在这个url后面加上用户ID传过去。
修改的url
url(r'^user/(?P<user_id>\d+)$', views.user, name = 'user'),
这里的user_id就是我们要传的用户ID,d+代表的是整型(后面改成了w+,就可以传字符型的ID了)。View.user是在view里面实现的类似于一个控制方法吧,就是接收用户的ID并
拿者这个ID去寻找这个用户生成我们需要的other用户。
def user(request, user_id): try: user = User.objects.get(userID = request.session['userID']) except: return HttpResponseRedirect("/index/login") other = User.objects.get(userID = user_id) if request.method == 'POST': userID = request.POST['userID'] oldPassword = request.POST['oldPassword'] password = request.POST['password'] confirmPassword = request.POST['confirmPassword'] session = request.POST['session'] specialty = request.POST['specialty'] tel = request.POST['tel'] email = request.POST['email'] nickname = request.POST['nickname'] if oldPassword != user.password: return HttpResponse("password error") else: if password.strip() != '' and password == confirmPassword: user.password = password user.session = session user.specialty = specialty user.tel = tel user.email = email user.nickname = nickname user.save() return render(request, 'cugbacm/userInfo.html', {'userID':request.session['userID'],'user': user, 'other':other}) else: return HttpResponse("password and confirmPassword is not the same!") else: return render(request, 'cugbacm/userInfo.html', {'userID':request.session['userID'],'user': user, 'other':other})
这里我们可以看到我们接收来自url的参数user_id形成我们的other,然后在render里面把other用户传递给userInfo页面。这里的判断是修改个人信息的时候的修改用户新的
save。暂时还没有解决。
2.3:修改页面中的链接
这里的修改就是把HTML文件中的用户ID的href的链接都改成"/index/userInfo/需要传递的ID"。涉及到user的都要修改,已problemList.html为例,在涉及用户ID的地方添加链
接:
<ul class="dropdown-menu"> <li><a href=http://www.mamicode.com/"/index/userInfo/{{userID}}">User Info>
其中的{{userID}}就是我们需要传递的参数。2.4:页面测试
重启服务器,检测目前修改的功能的实现情况,基本实现
3:修改userInfo原件:
本来想着直接就把那个view里面的user复制到view里面的userInfo上就OK了,结果出了一大堆错误,调了好久
先就是实现在userInfo里面点击user info跳转到userInfo的问题,按照前面的讨论,在这里只要把传递的参数设置成当前用户的ID就可以实现了。可是就是一直搞不定。传
参数过去的时候老实说404NotFound,主要的就是在Url的链接看到没有ID传过去,奇怪死了,明明传递了当前用户的ID过去就是不显示,而且在Url里面也有设计加传参。各种
改还是不对,然后发现下面的代码:
return render(request, 'cugbacm/user.html', {'userID':request.session['userID'],'user': user, 'other':other})就是我还是跳转到了我先前写的user.html文件,改了之后貌似就可了。但是,此时服务器不干了,死活不给我反应页面的修改,各种调就是没反应,死了一会儿。重启了一下
电脑,等了一会连接上去,又有反应了,受不了了。然后改了一下一个链接,就OK了。然后就是把其它涉及到的ID的地方全部修改链接。
4:测试
涉及到UserID转userInfo的基本上在每个页面都要改。都是href的修改,基本上基本的需要都是可以的了。
总的来说,其实基本上没有代码量,就是修修改改。刚开始的时候一直在看整个OJ的页面的流程,了解基本的过程。后面的就是一些模仿性的修修改改。太挫了,各种逻辑不
清楚,还有就是我修改了url的传递参数的方式,很多地方又需要修改了,比如说个人信息的修改。其实当时也没考虑到这个,现在也是一个麻烦的事情,后面还需要修改。