我有一个HTML页面上的一些链接一样,目前我将它们作为这样

<p> <a href="/cases/{{case.id}}/case_rate/-">rate down</a>

和具有url.py项:

 (r'^cases/(?P<case_id>\d+)/case_rate/(?P<oper>.)$', 'mysite.cases.views.case_rate'),

然后我有一个处理逻辑并撞击DB的图的功能,然后执行此:

return HttpResponseRedirect(request.META.get('HTTP_REFERER','/'))

我的有没有更好的方式来做到这一点?我可以看到这将是美好的,因为它确实有重绘屏幕以显示新的评级...

有帮助吗?

解决方案

来处理这种情况的典型的方法是用一个Ajax请求。

而不是链接的,你把一个JavaScript处理程序调用视图,至极更新数据库,并返回新的评级对商品的JSON / XML对象。然后另一个JavaScript手柄接收响应并且更新在屏幕上的等级数,没有页面重载。

在理想情况下,你会保留两个版本:普通的HTML(您目前拥有的)和Ajax的一个。一会是AJAX附加到页面加载后的元素,所以如果JavaScript不可用,你仍然有一个工作网站。

之后,关于组织,你可以对你的看法是“Ajax”的参数。视图应相应地更新数据库,如果它是一个Ajax调用,返回JSON / XML响应,否则,返回新的一页。可以保持逻辑方式(在抓取对象,更新DB)上的一个位置。

其他提示

如果你问case_rate是否应该还是走在了views.py因为它返回一个重定向,而不是提供内容,答案是肯定的,因为case_rate正在处理请求并返回一个响应。

但考虑,你必须在views.py双视角功能是有一些重复的代码,你选择因素的重复程序代码到另一个函数,没有采取两种请求和返回响应的情况。请问这是否公平的游戏在views.py离开?当然,如果移动到其他地方会使代码难以阅读。或者你可以选择把它放在其他地方。这真是您的通话根据您的味觉。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top