小编mar*_*dev的帖子

DecimalField将Zero转换为0E-10

Django 1.6,Python 2.7.5 +,PostgreSQL 9.1,Linux.

我在模型中定义了几个十进制字段,如下所示:

min_inclusive = models.DecimalField(_('minimum inclusive'), max_digits=19,
                    decimal_places=10,
                    help_text=_("Enter the minimum (inclusive) value for this concept."),
                    null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)

当我输入0(零)时通过管理界面保存我得到的对象0E-10作为值.

那么,为什么不只是存储和显示零?

文档未指定decimal_places是强制还是最大数量.

这个显示器是因为需要 10个位置吗?如果是这样,使用默认表单小部件,TextInput在我看来应该只扩展到该大小或至少滚动到该大小.

在PostgreSQL中,它存储为 0.0000000000

python django postgresql

12
推荐指数
1
解决办法
1万
查看次数

我在哪里可以覆盖jwt_response_payload_handler方法?

我用pip安装了JWT.现在我想覆盖该方法

def jwt_response_payload_handler(token, user=None, request=None):
    return { 'token': token, }
Run Code Online (Sandbox Code Playgroud)

成为

def jwt_response_payload_handler(token, user=None):
    return {
        'token': token,
        'user': UserSerializer(user).data
    }
Run Code Online (Sandbox Code Playgroud)

我应该在哪里覆盖它?我是否在我自己的应用程序中覆盖该方法,但在何处以及如何?或者我是否修改了库中的原始代码?

我修改了库中的方法,它工作正常,但我不认为这是正确的方法.有人能帮我吗?谢谢

python django jwt django-rest-framework

11
推荐指数
2
解决办法
4977
查看次数

Django Rest Framework {"detail":"未提供身份验证凭据."}

我尝试使用OAuth Toolkit为我的Rest API添加身份验证.我进入登录页面并输入我的用户名和密码然后重定向到我的api.然后我收到一条消息{"详细信息":"未提供身份验证凭据."}我尝试过调查此问题,大多数有问题的人似乎都错过了Rest_Framework设置.我不认为我有.

继承我的代码:

Settings.py

LOGIN_REDIRECT_URL = '/api/users/'

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.TokenAuthentication',
        'oauth2_provider.ext.rest_framework.OAuth2Authentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAdminUser',
    ),
    'DEFAULT_RENDERER_CLASSES': (
        'rest_framework.renderers.JSONRenderer',
    ),
    'DEFAULT_PARSER_CLASSES': (
        'rest_framework.parsers.JSONParser',
    ),
}
Run Code Online (Sandbox Code Playgroud)

url.py

urlpatterns = patterns('', url(r'^admin/', include(admin.site.urls)),
                       url(r'^accounts/login/$', auth_views.login, {'template_name': 'login.html'}),

                       url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
                       url(r'^api-token-auth/', 'rest_framework.authtoken.views.obtain_auth_token'),
                       url(r'^o/', include('oauth2_provider.urls', namespace='oauth2_provider')),

                       url(r'^api/users/$', api.UserList.as_view()),
                       url(r'^api/users/(?P<pk>[0-9+]+)/$', api.UserDetail.as_view()),
                       )
Run Code Online (Sandbox Code Playgroud)

api.py

@receiver(post_save, sender=User)
def init_new_user(sender, instance, signal, created, **kwargs):
    if created:
        Token.objects.create(user=instance)


class APIEndpoint(ProtectedResourceView):
    def get(self, request, *args, **kwargs):
        return HttpResponse('Protected with OAuth2!')


class UserViewSet(viewsets.ModelViewSet):
    model = User …
Run Code Online (Sandbox Code Playgroud)

python django rest django-rest-framework

10
推荐指数
2
解决办法
2万
查看次数

如何在django-rest-framework视图集中获取自定义列表视图

我有一个电视频道模型并创建了一个django-restframework viewlet,它为我提供了一个开箱即用的列表和详细视图.在顶部,我添加了两个名为all_events和now_and_next_event的自定义单对象视图,如下所述:标记额外的路由方法.到目前为止,这很有效.

class ChannelViewSet(viewsets.ModelViewSet):
    """
    A viewset for viewing and editing channel instances.
    """
    serializer_class = serializers.ChannelSerializer
    queryset = Channel.objects.all()

    @link()
    def now_and_next_event(self, request, pk):
        ''' Show current and next event of single channel. '''
        ...
Run Code Online (Sandbox Code Playgroud)

现在我想添加一个自定义视图,它不是单个对象视图,而是类似列表的视图:

class CurrentEvents(generics.ListCreateAPIView):
    ''' Show current event of all channels. '''
    model = Event
    serializer_class = serializers.EventSerializer

    def get(self, request):
        ...
Run Code Online (Sandbox Code Playgroud)

当我禁用我的viewlet并为其添加手动url模式时,它也可以正常工作.但我还没弄明白如何让它们都使用相同的'api/channel /'前缀,或者我想要的更多,如何将自定义列表视图类添加到我的viewlet中.

这是我的viewlet网址模式:

^api/channel/$ [name='channel-list']
^api/channel/(?P<pk>[^/]+)/$ [name='channel-detail']
^api/channel/(?P<pk>[^/]+)/all_events/$ [name='channel-all-events']
^api/channel/(?P<pk>[^/]+)/now_and_next_event/$ [name='channel-now-and-next-event']
Run Code Online (Sandbox Code Playgroud)

我想访问我的列表视图,如:

^api/channel/current_events/$ [name='event-current']
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

9
推荐指数
2
解决办法
1万
查看次数

Django-Rest-Framework序列化器类元

因为我可以在元模型类中使用两个,当我运行它时,我得到一个错误如何使用模型?这是Django Rest的一个例子

from rest_framework import serializers
from .models import Post,Miembros

class PostSerializer(serializers.HyperlinkedModelSerializer):

    class Meta:
        model = Post
        fields = ('id', 'url', 'titulo', 'contenido','fecha_evento','fecha_evento','banner_grande','lugar')

        model = Miembros
        fields = '__all__'
Run Code Online (Sandbox Code Playgroud)

/ api/posts /中的TypeError fields选项必须是列表或元组.得了str.请求方法:GET请求URL:http://127.0.0.1 :8000/api/ postts / Django版本:1.8.3异常类型:TypeError异常值:该fields选项必须是列表或元组.得了str.异常位置:/home/root-master/restcosolg/cslg/local/lib/python2.7/site-packages/rest_framework/serializers.py in get_field_names,第900行Python可执行文件:/ home/root-master/restcosolg/cslg/bin/python Python版本:2.7.6

django rest django-rest-framework

9
推荐指数
2
解决办法
1万
查看次数

Django休息更改用户密码视图

我正在使用Django Rest创建一个简单的API.我需要创建一个用户可以更改他/她的密码的视图.我使用默认的Django用户模型和一个简单的UserSerializer.有方法被调用,set_password但我无法找到一种方法与用户seriliazer正确使用它.我无法在任何地方找到任何解决方案.

UserSelializer:

class UserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = ('id', "username", 'email', 'first_name', 'last_name', 'password')
Run Code Online (Sandbox Code Playgroud)

View(ClassedBased):这是一个例子(我不知道我在这做什么):

    class UserChangePassword(APIView):

        def patch(self, request):
            user = self.request.user
            serialized = UserSerializer(data=request.DATA)
            if serialized.is_valid():
                user.set_password(serialized.data['password'])
                user.save()
                return Response(status=status.HTTP_205_RESET_CONTENT)
            else:
            return Response(serialized.errors, status=status.HTTP_400_BAD_REQUEST)
Run Code Online (Sandbox Code Playgroud)

请注意,我想发布一个json脚本来更改为密码.像这样的东西:

 {
    "old_password": "123", 
    "new_password": "12345"
}
Run Code Online (Sandbox Code Playgroud)

python django rest django-rest-framework

7
推荐指数
1
解决办法
8006
查看次数

如何让 django-cron 自动工作

我正在努力django-cron工作,但没有。我按照此处的说明设置了我的 cron,但问题是我的作业仅在我python manage.py runcrons在命令行上键入时运行,并且该作业不是每 5 分钟运行一次。我不知道还能做什么。我已经阅读了其他文件crontabs,chronograph但很困惑。我是将 crontabs 与 cron 或计时码表一起安装,还是仅使用 django-cron 就能让 cron 正常工作。还有我如何让我的工作自动运行。在此处的文档中,我阅读了Now everytime you run the management command python manage.py runcrons all the crons will run if required. Depending on the application the management command can be called from the Unix crontab as often as required. Every 5 minutes usually works for most of my applications.. 这是什么意思。我在这里错过了什么。我迷路了。帮助

设置.py

CRON_CLASSES = (
"myapp.views.MyCronJob", …
Run Code Online (Sandbox Code Playgroud)

django cron crontab cron-task django-cron

6
推荐指数
1
解决办法
9297
查看次数

将自定义属性添加到django模型字段

我可以在django模型字段中添加一些任意属性吗?

例如:

charField = models.CharField('char field', max_length=1024, aaaaa=true)
Run Code Online (Sandbox Code Playgroud)

我可以添加属性aaaaa吗?

这可行吗?

django django-models

6
推荐指数
2
解决办法
4893
查看次数

如何在django-rest-framework的authtoken中更改现有令牌?

保存失败:

from rest_framework.authtoken.models import Token

token = Token.objects.get(user=user1)
token.key = '1'
token.save()
Run Code Online (Sandbox Code Playgroud)

给

IntegrityError:重复键值违反唯一约束"authtoken_token_user_id_key"

django django-models django-rest-framework

6
推荐指数
2
解决办法
3023
查看次数

"detail":"CSRF失败:CSRF令牌丢失或不正确."

我正在使用Tastypie制作RESTful API,当我尝试POST/PUT/DELETE请求它时说:

"detail":"CSRF失败:CSRF令牌丢失或不正确."

它工作得很好GET.我已经阅读了SO上的各种主题,说:

  • 删除cookie
  • 或使用 @csrf_exempt
  • 或使用 @method_decorator(csrf_exempt)

但它都不起作用.

我怎样才能超越这个错误?

views.py

class SnippetList(mixins.ListModelMixin,
                  mixins.CreateModelMixin,
                  generics.GenericAPIView):
    queryset = Snippet.objects.all()
    serializer_class = SnippetSerializer

    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)


    def post(self, request, *args, **kwargs):
        request._dont_enforce_csrf_checks = True
        print request.DATA
        return self.create(request, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

serializer.py

from django.forms import widgets
from rest_framework import serializers
from snippets.models import Snippet, LANGUAGE_CHOICES, STYLE_CHOICES


class SnippetSerializer(serializers.ModelSerializer):
    class Meta:
        model = Snippet
        fields = ('id', 'title', 'code', 'linenos', 'language', 'style')
Run Code Online (Sandbox Code Playgroud)

urls.py …

django django-csrf tastypie

6
推荐指数
1
解决办法
7662
查看次数