通过url与django rest api交互如何工作?

时间:2018-07-27 12:56:56

标签: django rest django-rest-framework

我知道Django rest框架是用于以编程方式与Django服务器交互的,但我仍然不了解的是方法。
我想做的就是让我的客户端应用程序(移动应用程序)发送数据(以某种方式)到Django服务器,以便基于变量创建/检索数据,显然,这必须通过URL进行,因为不会与API直接进行GUI交互。 (除非我弄错了,可能是我错了)
我已经阅读了官方文档,并按照教程进行了最后操作,但仍然不了解它应该如何工作。因为我到处搜索并且没有找到足够简单的解释来掌握这一切应该如何工作的核心概念,所以这是一个快速而简单的解释。

3 个答案:

答案 0 :(得分:0)

我认为您正在寻找的是JSONResponse和相关对象:

这将允许您发送JSON以响应请求。

from django.http import JsonResponse
def my_view_json(request):    
    response = JsonResponse({'foo': 'bar'})
    return response

如果您的模板或网页需要向视图发出请求 并指定其他参数,则可以通过添加POST变量(examples)来实现。这些可以在视图中解析,如下所示:

def myView(request):
    my_post_var = request.POST.get('variable_name', 'default_value')
    my_get_var = request.GET.get('variable_name', 'default_value')

然后,您可以按自己喜欢的方式解析发送的内容,并决定要使用它做什么。

答案 1 :(得分:0)

基本上, 您定义在其上执行Get / POST / PUT请求的URL,然后可以向其发送数据。

例如: urls.py

    from django.conf.urls import url,include
    from app import views
urlpatterns = [
 url(r'^(?i)customertype/$',views.CustomerViewSet.as_view()),
 url(r'^(?i)profile/$', views.Save_Customer_Profile.as_view()),
 url(r'^(?i)customer_image/$', views.Save_Customer_Image.as_view()),
]

现在,只要用户将请求发送到: example.com/profile ==>这将在“方法类型”的Save_Customer_Profile视图中接收,Save_Customer_Profile如下:

class Save_Customer_Profile(APIView):
    """Saves and Updates User Profile!"""
    def get(self, request, format=None):
       return AllImports.Response({"Request":"Method Type is GET Request"})

    def post(self, request, format=None):
        return AllImports.Response({"Request":"Method Type is Post Request"})

    def put(self,request, format=None):
        return AllImports.Response({"Request":"Method Type is Put Request"})

答案 2 :(得分:0)

我认为OP指的是如何以编程方式执行GET / POST请求。在这种情况下,就足够了(值是虚拟的):

获取:

import requests

r = requests.get('http://localhost:8000/snippets/')

print(r.json())
print(r.status_code, r.reason)

POST:

data = {'code': 'print(" HELLO !!!")', 'language': 'java','owner': 'testuser'}
r = requests.post('http://localhost:8000/snippets/', data=data,  auth=('testuser', 'test'))