2013-03-11 102 views
0

我有一个视图(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',只需运行该函数即可添加到候选列表中。

+0

也许如果你发布了一些代码,我们可能会帮助你。在你的views.py和你的一些html中包含urls.py的部分,你的函数。 – 2013-03-11 23:20:43

+0

我已添加代码。 – 2013-03-11 23:47:49

+0

我不明白。如果你不想去'slnew.html',为什么你要在'usersl'的'render_to_response'中指定(而不是'index.html')(顺便说一句,它缺少'return'语句) 。如果你不想重新加载整个'index.html',你应该使用AJAX。 – 2013-03-12 00:05:59

回答

0

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

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