首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将“dict”对象从Django模板传递到角控制器--避免jsonify和解析

将“dict”对象从Django模板传递到角控制器--避免jsonify和解析
EN

Stack Overflow用户
提问于 2015-09-14 07:06:40
回答 1查看 744关注 0票数 1

我试图从django模板调用一个角控制器函数,并传递我正在迭代的对象,但是它要求我在传递之前首先将对象转换为json,然后在控制器中,我必须再次解析json到object。

下面是片段:

Django TemplateView:

代码语言:javascript
运行
复制
class Menu(TemplateView):
    template_name = 'menu.html'

    def get_context_data(self, **kwargs):
        context = super(Menu, self).get_context_data(**kwargs)
        # Using the DRF API to fetch the data for template view
        menus = requests.get('http://127.0.0.1:8000/api/v1/menus/').json()
        context['menu'] = menus
        return context

menu.html:

代码语言:javascript
运行
复制
<div class="row" ng-controller="MenuController as vm">
    <ul>
        {% for menu_item in menu.menu_items %}
            <li class="col-xs-12 col-sm-6 col-md-4">
                <!-- menu_item is dict type object -->
                <button class="btnRed txtUpper" 
                    ng-click="vm.addToCart('{{ menu_item|to_json|escapejs }}')">
                    Add to cart
                </button>
            </li>
         {% endfor %}
    </ul>
</div>

to_json是我的自定义过滤器:

代码语言:javascript
运行
复制
@register.filter
def to_json(value):
    return json.dumps(value)

现在,在我的控制器中,要使用传递的对象,我必须再次将json解析为object:

代码语言:javascript
运行
复制
angular.module('menu', [])

.controller('MenuController', ['$log', function($log) {
    this.addToCart = function(menuItem) {
        menuItem = JSON.parse(menuItem);
        $log.debug('Adding MenuItem to Cart: ' + menuItem);
        $log.debug('Adding MenuItem to Cart: ' + menuItem['id']);
    };
}]);

所以,我有很多事情要做。有一次,这很好,但是如果我要对每一个模板和角度积分都这么做的话,那就太好了。有什么优雅的方法可以避免吗?

EN

回答 1

Stack Overflow用户

发布于 2015-09-14 07:36:55

您似乎很困惑JS前端和REST后端应该如何工作。这里不需要你的TemplateView。您的JS应该直接向DRF端点发出请求,后者将直接返回JSON。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32558959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档