【发布时间】:2018-09-19 00:59:35
【问题描述】:
我需要通过 android 应用程序向我的 Django 服务器发出 GET 请求。 问题是这个 GET 函数是用 Django 编写的,带有 @login_required。
我应该做什么样的请求来登录并执行 GET 请求?
我的 API:
from django.shortcuts import render
from django.http import HttpResponse,HttpResponseServerError, HttpResponseBadRequest
from rest_framework.decorators import api_view
from .models import Order, New
import json
from django.shortcuts import render_to_response
from .forms import NewForm
from django.core.files.storage import FileSystemStorage
from django.contrib.auth.decorators import login_required
from .validation import *
from django.views.decorators.csrf import csrf_exempt
@login_required
@api_view(['GET'])
def get_order(request):
order_list = Order.objects.values("user_name",
"user_surname",
"order_date").all()
return HttpResponse(json.dumps([x for x in order_list])
我的 urls.py:
from django.urls import path
from django.conf.urls import url
from . import views
app_name = 'API'
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^order', views.order, name='order'),
url(r'^get_order', views.get_order, name='get_order')]
和:
from django.contrib import admin
from . import settings
from django.views.static import serve
from django.urls import path, include, re_path
from django.conf.urls.static import static
from API.views import index
urlpatterns = [
path('API/', include('API.urls',namespace="API")),
path('admin/', admin.site.urls),
path('', index, name='index'),
path(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
re_path(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT})
]
在 Postman 中,我正在使用基本身份验证执行 GET (http://127.0.0.1:8000/API/get_order),收到 302 状态码。
【问题讨论】:
-
也许你需要用django-rest-framework 构建RESTFul API。 DRF 中有几种客户端身份验证方法,例如。
TokenAuthentication。如果您不想构建 RESTFul API,则需要利用WebView来访问您的 django 网站。
标签: android django api get request