Django-重定向到相同的视图没有重新编号
问题描述:
我有一个视图(views.loaditems)运行一些算法,并将项目传递到模板(product.html)的项目加载,并与每个项目,我有一个“ add_to_shortlist“链接。点击这个链接后,该项目被添加到用户的短名单中(为此我有一个功能)。我希望点击时,页面不会重新加载并且有其项目,但只需将该项目添加到用户的名单中即可。另外,我应该在哪里定义这个短名单功能?Django-重定向到相同的视图没有重新编号
我是新来的Django,任何帮助将不胜感激。谢谢。
更新:这是我的代码:
views.py
def loaditems(request):
#some code
ourdeals = SDeals.objects.filter(**{agestring3:0})
sorteddeals = ourdeals.order_by('-total_score')
user = request.user
context = {'deals': sorteddeals, 'sl_products':sl_products, 'user':user,}
template='index.html'
return render_to_response(template, context, context_instance=RequestContext(request))
def usersl(request, id, id2):
userslt = User_Shortlist.objects.filter(id__iexact=id)
products = SDeals.objects.filter(id__iexact=id2)
product = products[0]
if userslt:
userslt[0].sdeals.add(product)
sl = userslt[0].sdeals.all()
return render_to_response('slnew.html', {'sl':sl}, context_instance=RequestContext(request))
在我的index.html
我:
<div class="slist"><a href="/usersl/{{user.id}}/{{ deal.id }}"></a></div>
这urls.py带我去views.usersl :
url(r'^usersl/(?P<id>\d+)/(?P<id2>\d+)/$', views.usersl),
我不想去slnew.html,而是在不重新加载index.html的情况下,点击'slist',只需运行该函数即可添加到候选列表中。
答
为了在不浏览浏览器的情况下对服务器和页面进行更改,您需要查看JavaScript解决方案。阅读关于Ajax的信息。实质上,您需要使用一些JavaScript将更新发送到服务器,并更改HTML。
JQuery是一个流行的库,可以帮助你做到这一点。一个更复杂的例子是AngularJS。在Django方面,您将编写一些视图来处理页面中使用的这些小型更新任务。像Django REST框架或Django Slumber这样的库会帮助你。
也许如果你发布了一些代码,我们可能会帮助你。在你的views.py和你的一些html中包含urls.py的部分,你的函数。 – 2013-03-11 23:20:43
我已添加代码。 – 2013-03-11 23:47:49
我不明白。如果你不想去'slnew.html',为什么你要在'usersl'的'render_to_response'中指定(而不是'index.html')(顺便说一句,它缺少'return'语句) 。如果你不想重新加载整个'index.html',你应该使用AJAX。 – 2013-03-12 00:05:59