Python 将Django与Angular js集成
这将是一个非常基本的问题,如何将Django与angularjs集成,我想使用json从数据库中转储数据,但我没有任何想法,或者你可以说我无法开始这个过程。我对Angularjs有一个非常基本的了解。如果你给出一些示例,那么它将帮助我使用Django开始Angularjs。为了更方便,这里是我制作的示例视图Python 将Django与Angular js集成,python,django,angularjs,Python,Django,Angularjs,这将是一个非常基本的问题,如何将Django与angularjs集成,我想使用json从数据库中转储数据,但我没有任何想法,或者你可以说我无法开始这个过程。我对Angularjs有一个非常基本的了解。如果你给出一些示例,那么它将帮助我使用Django开始Angularjs。为了更方便,这里是我制作的示例视图 def userphoto(request): user_photo = Photo.objects.get(user = request.user) context = R
def userphoto(request):
user_photo = Photo.objects.get(user = request.user)
context = RequestContext(request)
ctx_dict = {'user_photo': user_photo}
return render_to_response('userena/profile_detail.html',ctx_dict,context)
这里的ctx_dict直接呈现到一个html文件中,但我想使用Angularjs呈现它们,可能使用json和http get请求来实现使用Angularjs http服务的数据。我如何做到这一点?我是Angularjs的新手。
- 当然,你可以使用django angular,但我发现这个软件包太在制品了
您应该考虑AJAX,而不仅仅是渲染。这取决于一个问题
我建议使用普通django或添加tastypie或django rest框架。一、 目前,使用普通django视图
是的,要将模型数据发送回angular,您应该提供数据的JSON,您应该序列化您的模型。但是有很多问题和陷阱。首先,您不需要模型中的所有内容。因为用户可以访问一些奇怪的字段。因为您将发送太多在客户端不使用的数据
因此,您应该将items数据序列化为带有所需字段的JSON。以下是我如何做到这一点的示例:
@ajax_request
@login_required
def mydata_ajax(request):
qs = MyData.objects.all()
#add possible filters
if request.GET.get('search'):
s = request.GET.get('search')
qs = qs.filter(
Q(name__icontains=s) |
Q(email__icontains=s) |
Q(address__icontains=s) |
)
qs = qs.order_by('task_time', 'name')
#setup pagination so angular will retrieve data page by page
pages = Paginator(qs, 20)
try:
current_page = int(request.GET.get('page', 1))
except ValueError:
current_page = 1
if current_page > pages.num_pages:
current_page = 1
#get reguested page
page = pages.page(current_page)
#create response
return {
'total': pages.count,
'num_pages': pages.num_pages,
'page': current_page,
'data': [{
'id': o.id,
'name': o.name,
'email': o.email,
'address': o.address,
} for o in page.object_list]
}
首先,我使用django恼人包中的ajax\u request
decorator作为我的视图,它希望视图返回列表、字典或任何其他简单数据,以便它将自动序列化(转换)为JSON
这里有一些方便的东西,比如过滤器和分页的例子,顺便说一句。你能更详细地了解我真正想要的是什么吗?Django&Angular Js可以用来实现过滤器。这里有一篇关于这个问题的文章。