使用Angular - 从REST端点检索数据时出现问题仍然显示静态/

时间:2017-02-27 07:32:07

标签: angularjs django rest

我目前遇到的问题一直让我疯狂过去30-40分钟。我已经使用Django / Django REST框架成功创建了产品api。但是,当我调用端点尝试使用角度消耗它时,我得到404错误。当我打开控制台时,我遇到了一个错误,指出GET http://localhost:8000/static/api/products/ 404 (Not Found)。但是,当我在浏览器中手动导航到URL时,我会看到可浏览的api菜单。

我不确定这里发生了什么......但我认为这可能是因为我的角度静态网址/根源。

以下是该应用的主要区域网址的当前代码:

from django.conf.urls import url,include
        from django.contrib import admin

        from django.conf.urls.static import static
        from django.conf import settings

        urlpatterns = [
            url(r'^admin/', admin.site.urls),
            url(r'^api/', include('customerreview_rest.urls', namespace='api')),
            url(r'^api/',include ('products_rest.urls', namespace='api')),
            url(r'^', include('GemStore_App.urls',namespace='frontend')),
        ] + static(settings.MEDIA_URL,document_root = settings.MEDIA_ROOT)

    Here is the products URL/root for the endpoint:

        from django.conf.urls import url,include
    from rest_framework import routers
    from products_rest.viewsets import ProductsViewsets

    router = routers.DefaultRouter()
    router.register('products',ProductsViewsets,'products')


    urlpatterns = [
        url(r'^', include(router.urls)) #base router
    ]

最后,这是静态角度文件的代码:

    from django.conf.urls import url, include
from django.views.generic.base import RedirectView

urlpatterns = [
    url(r'^$', RedirectView.as_view(url='static/index.html', permanent=False), name='index')
]

这里也是我计划用来使用Angular来使用api的代码:

    myStore.controller("myStoreController",function($scope,$http){
        $scope.gems = $http.get("api/products/").then(
            function(response){
                $scope.gems = response.data
            }, function(error){
                $scope.error = error
            });


})

任何关于这个话题的灯光,或者正确方向上的一点,都会非常感激。

由于

1 个答案:

答案 0 :(得分:0)

原来问题是我需要在通话中加入另一个/才能接受。

总而言之,角度端口的代码现在看起来像这样:

myStore.controller("myStoreController",function($scope,$http){
        $scope.gems = $http.get("/api/products/").then(
            function(response){
                $scope.gems = response.data
            }, function(error){
                $scope.error = error
            });


})

@Sayse感谢您的帮助。