OJ2.0修改完善userInfo的跳转

来源:互联网 发布:淘宝客服美女头像 编辑:程序博客网 时间:2024/05/23 13:30

这次主要要实现的内容是对于和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="/index/userInfo/{{userID}}">User Info</a></li>          <li><a href="#">Another action</a></li>          <li><a href="#">Something else here</a></li>          <li class="divider"></li>          <li><a href="/index/login">Login out</a></li>        </ul>

其中的{{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的传递参数的方式,很多地方又需要修改了,比如说个人信息的修改。其实当时也没考虑到这个,现在也是一个麻烦的事情,后面还需要修改。







0 0
原创粉丝点击