0

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

我是 Django 的新手,任何帮助将不胜感激。谢谢。

更新:这是我的代码:

视图.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 上而不重新加载它,然后单击“列表”,只需运行该功能以添加到候选名单。

4

1 回答 1

0

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

JQuery 是一个流行的库,可以帮助您做到这一点。一个更复杂的例子是 AngularJS。在 Django 方面,您将编写一些视图来处理页面中使用的这些小更新任务。像 Django REST framework 或 Django Slumber 这样的库会帮助你。

于 2013-03-12T01:19:37.143 回答