Django的索引URL禁用API URL

时间:2019-06-03 19:40:40

标签: django angular routing

将Angular与Django集成,服务器正在接收来自前端的请求,但我无法处理它们,因为它们未达到目标功能

这是views.py:

class VView(viewsets.ModelViewSet):
        queryset = User.objects.all()
        serializer_class = UserSerializer

def index(request):
    return render(request, 'index.html')

@permission_classes((permissions.AllowAny))
class Login(APIView):
   def post(self, request)
       return JsonRespone({"some":"data"}, status=200)

这是我的urls.py

urlpatterns = [
  url(r'^admin/', admin.site.urls),
  url('', index),
  url('user/login',Login.as_view()),
  url('user/registration',Login.as_view()),
]

问题是,现在user/login服务器的发送请求未按原样响应json,但是当我注释掉或删除索引URL时 所以我有:

urlpatterns = [
  url(r'^admin/', admin.site.urls),
  url('user/login',Login.as_view()),
  url('user/registration',Login.as_view()),
]

一切正常,当我使用Postman时,我可以从服务器获得响应,或者在另一个localhost上运行前端,但是问题是当我通过localhost:8000访问它时,服务器无法呈现网页

1 个答案:

答案 0 :(得分:3)

发生这种情况是因为您将其与pathurl混淆了。

 url('', index),

在这里,您在网址中输入了'',这不是正确的方法。这就是为什么它不进入下一个后续模式的原因。

  

解决方案1::使用正确的url模式和使用^$的常规模式。

urlpatterns = [
    url(r'^$', index),
    url(r'^user/login/$',Login.as_view()),
    . . . . . 
]
  

解决方案2::如果使用path,请使用django>=2.0

from django.urls import path

urlpatterns = [
    path('', index),
    path('user/login',Login.as_view()),
    . . . . 
]