我有一个视图(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',只需运行该功能即可添加到候选名单。
答案 0 :(得分:0)
要在服务器和页面中进行更改而不使用浏览器进行导航,您需要查看JavaScript解决方案。阅读有关Ajax的信息。实质上,您需要使用一些JavaScript将更新发送到服务器,并更改HTML。
JQuery是一个受欢迎的库,可以帮助您实现这一目标。一个更复杂的例子是AngularJS。在Django端,您将编写一些视图来处理页面中使用的这些小更新任务。 Django REST框架或Django Slumber等图书馆将为您提供帮助。