首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在DjangoRestFramework(DRF)中,未定义名称“请求”

在DjangoRestFramework(DRF)中,未定义名称“请求”
EN

Stack Overflow用户
提问于 2016-08-02 10:35:30
回答 1查看 2.4K关注 0票数 1

我正在制作api,它获取'android或iphone‘用户的坐标,并依赖于这个坐标,生成’post_list‘(字面意思是post_list)。

使用DRF,我创建了我的查询集(这个查询集是用来生成‘post_list’的),如下所示

views.py

代码语言:javascript
运行
复制
from django.shortcuts import render
from django.contrib.gis.geos import GEOSGeometry
from django.contrib.gis.measure import D
from .models import Post
from django.http import HttpResponse
from blog.models import Post, Comment
from blog.serializers import PostSerializer, CommentSerializer
import django_filters
from rest_framework import filters, viewsets, generics
from rest_framework.decorators import permission_classes
from rest_framework.permissions import IsAuthenticated


class PostViewSet(viewsets.ModelViewSet):
    serializer_class = PostSerializer
    permission_classes = [IsAuthenticated]

    def get_queryset(self) :
        #these are for getting user's coordinates.
        lat = request.POST.get('user_lat', '13')
        lon = request.POST.get('user_lon', '15')
        userpoint = GEOSGeometry('POINT(' + lat + ' ' + lon + ')', srid=4326)
        #these is for making my post_list
        result = []
        i = 1
        while i<50:
            list_i = Post.objects.filter(point__distance_lte = (userpoint, D(km=i)))
            result.extend(list_i)
            if len(result) > 0:
                result = result[:0]
                break
            i += 1
        return self.result

错误跟踪

代码语言:javascript
运行
复制
Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/posts/

Django Version: 1.9.7
Python Version: 3.5.2
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.gis',
 'django.contrib.sites',
 'debug_toolbar',
 'blog',
 'rest_framework',
 'rest_framework.authtoken',]

Installed Middleware:
['debug_toolbar.middleware.DebugToolbarMiddleware',
 'django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']



Traceback:

File "/home/keepair/djangogirls/myvenv/lib/python3.5/site-packages/django/core/handlers/base.py" in get_response
  149.                     response = self.process_exception_by_middleware(e, request)

File "/home/keepair/djangogirls/myvenv/lib/python3.5/site-packages/django/core/handlers/base.py" in get_response
  147.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/home/keepair/djangogirls/myvenv/lib/python3.5/site-packages/django/views/decorators/csrf.py" in wrapped_view
  58.         return view_func(*args, **kwargs)

File "/home/keepair/djangogirls/myvenv/lib/python3.5/site-packages/rest_framework/viewsets.py" in view
  87.             return self.dispatch(request, *args, **kwargs)

File "/home/keepair/djangogirls/myvenv/lib/python3.5/site-packages/rest_framework/views.py" in dispatch
  466.             response = self.handle_exception(exc)

File "/home/keepair/djangogirls/myvenv/lib/python3.5/site-packages/rest_framework/views.py" in dispatch
  463.             response = handler(request, *args, **kwargs)

File "/home/keepair/djangogirls/myvenv/lib/python3.5/site-packages/rest_framework/mixins.py" in list
  40.         queryset = self.filter_queryset(self.get_queryset())

File "/home/keepair/djangogirls/blog/views.py" in get_queryset
  28.         lat = request.POST.get('user_lat', '13')

Exception Type: NameError at /posts/
Exception Value: name 'request' is not defined

我按照http://www.django-rest-framework.org/tutorial/6-viewsets-and-routers/#tutorial-6-viewsets-routershttp://www.django-rest-framework.org/api-guide/viewsets/#api-reference编写了这些代码

但我想我不太懂上面的博士

请帮帮我,我该怎么做才能解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-02 10:38:38

代码语言:javascript
运行
复制
lat = request.POST.get('user_lat', '13')
lon = request.POST.get('user_lon', '15')

应:

代码语言:javascript
运行
复制
lat = self.request.POST.get('user_lat', '13')
lon = self.request.POST.get('user_lon', '15')
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38718098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档