0

私は自分のサイトの 1 つを python django で開発しています。ここでは、検索するユーザー オプション (特定の要求) を指定したページの 1 つで angularjs を使用しています。これが私のモデルです..

class Request(models.Model):
    description = models.TextField(blank=True,null=True)
    category = models.ForeignKey(Category)
    sub_category = models.ForeignKey(SubCategory)

私の見解では、次のコードを使用して戻ります。

def some(code, x):
    exec code
    return x

def search_request(request):
    page = request.GET.get('page')
    term = request.GET.get('term')
    i = 0

    terms = "x = Request.objects.filter("
    for t in term.split(" "):
        i=i+1
        if(len(term.split(" "))>i):
            terms = terms +"Q(name__icontains='"+t+"')|"
        else:
            terms = terms +"Q(name__icontains='"+t+"'))"

    junk = compile(terms,'<string>', 'exec')

    spit = Request.objects.filter(name__icontains=term)
    requests = some(junk,spit)

    output = HttpResponse()
    output['values']=[{'requests':r,'category':r.category,'subcategory':r.sub_category} for r in requests]
    return JSONResponse(output['values'])

AngularJS を使用して戻ったときの HTML コード:

$scope.search = function(){
    $scope.results = $http.get("{% url 'search-requests-show' %}?term="+$scope.term).then(
        function(result){
            return result.data;
        }
    );
}

HTML 出力の結果は {[{results}]} のようになります。

"[{'category': <Category: The New Category>, 'requests': <Request: Need a Table>, 'subcategory': <SubCategory: Testsdfsdfsad>}]"

問題は、出力が「文字列」であるため、results.category を使用してアクセスできないことです。そのため、ng-repeat="result in results" は結果を

[ { ' c a ..... 

私はおそらくビューで何か間違ったことをしています。誰か提案があれば、答えてください。

4

2 に答える 2

0

Angular の json 文字列を返す必要があります。

import json
def resource_view(request):
    # something to do here
    return HttpResponse(json.dumps(your_dictionary))

より良い使い方のために、私はdjangorestframeworkをお勧めします。

オフトピック:

$http.get("{% url 'search-requests-show' %}?term="+$scope.term);

「param」オブジェクトを渡すことができます:

$http.get("{% url 'search-requests-show' %}", {param : {term:$scope.term}});
于 2013-11-17T10:00:52.947 に答える