Django-重定向到相同的视图而不重新加载

时间:2013-03-11 22:21:40

标签: django django-templates django-views

我有一个视图(views.loaditems),它运行一些算法并将项目传递到加载项目的模板(product.html),并且每个项目都有一个“add_to_shortlist”链接。点击此链接后,该项目将添加到用户的候选名单中(我有一个功能)。我希望点击,页面不会重新加载并有其项目,只需将该项目添加到用户的候选名单。另外,我应该在哪里定义这个候选名单功能?

我是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',只需运行该功能即可添加到候选名单。

1 个答案:

答案 0 :(得分:0)

要在服务器和页面中进行更改而不使用浏览器进行导航,您需要查看JavaScript解决方案。阅读有关Ajax的信息。实质上,您需要使用一些JavaScript将更新发送到服务器,并更改HTML。

JQuery是一个受欢迎的库,可以帮助您实现这一目标。一个更复杂的例子是AngularJS。在Django端,您将编写一些视图来处理页面中使用的这些小更新任务。 Django REST框架或Django Slumber等图书馆将为您提供帮助。