小编xyr*_*res的帖子

django-rest-framework:在ViewSet更新方法中添加其他权限

我有以下代码:

class UsersViewSet(viewsets.ModelViewSet):
    model = Users
    permission_classes = (IsAuthenticated,)

    def update(self, request, *args, **kwargs):
        return super(UsersViewSet, self).update(request, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

问题是:

  • 如何仅为更新方法添加其他权限?(需要获得isAuthenticated + Permission)
  • 仅为更新方法覆盖权限?(只需要获得没有isAuthenticated的Permission)viewset中的其他方法应该具有IsAuthenticated权限

我可以用装饰器制作吗?还是其他什么?

想得到类似的东西:

@permission_classes((IsAuthenticated, AdditionalPermission ))
def update:
    pass
Run Code Online (Sandbox Code Playgroud)

但是,如果我编写此代码,则不会通过请求检查第二个权限

python django django-rest-framework

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

如何让 Django ViewSet 在匿名帖子上返回 403 错误

当匿名用户尝试 POST 时,我试图让我的应用程序返回 403 错误。现在它返回 201 代码,但不会将帖子保存到数据库中。

问题是我的单元测试失败,因为它正在检查 403 代码。

这是我的看法

from post.models import Post
from post.serializers import PostSerializer
from post.permissions import IsOwnerOrReadOnly, IsOwnerOrAdmin
from rest_framework import viewsets, status
from rest_framework.response import Response

class PostViewSet(viewsets.ModelViewSet):
    """
    This viewset automatically provides `list`, `create`, `retrieve`,
    `update` and `destroy` actions.
    """
    queryset = Post.objects.all()
    serializer_class = PostSerializer
    # The default will be that anyone can read a post, but only owners can change it
    permission_classes = (IsOwnerOrReadOnly,)

    def get_permissions(self):
        # Both owners and …
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

3
推荐指数
1
解决办法
2534
查看次数

Django缓存如何删除“:1:”的键前缀

我在 Django 中设置了一个缓存,如下所示:

from django.core.cache import cache
...
cache.set("cae9ad31b9206a1b5594813b509e1003", "test", timeout=10)
Run Code Online (Sandbox Code Playgroud)

它生成一个这样的密钥:

:1:cae9ad31b9206a1b5594813b509e1003
Run Code Online (Sandbox Code Playgroud)

如何:1:从密钥中删除前缀?

django

3
推荐指数
1
解决办法
2632
查看次数

在Django表单中显示红色星号(*)

我想在表格中更改label_suffix的颜色。

我只想将“ *”设置为红色,其余的保留为黑色。这是可能的还是我必须更改HTML中的某些内容?

用户名= Forms.CharField(label =“用户名”,label_suffix ='*')

html django django-forms python-3.x

3
推荐指数
1
解决办法
325
查看次数

Android - 自定义小部件不会更新

我正在尝试为我的应用制作一个小部件,但它没有更新.我只需要更改textview文本并在按下按钮时打开一个活动,但它们都不起作用......

代码:

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.newswidget);
    views.setTextViewText(R.id.tvNews, "prueba1");
    views.setString(R.id.tvNews, "setText", "prueba3");

    Intent intent = new Intent(context, DoctorChatAndroid.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
    views.setOnClickPendingIntent(R.id.ibNext, pendingIntent);

    for (int i = 0; i < appWidgetIds.length; i++) {
        appWidgetManager.updateAppWidget(i, views);
    }
}
Run Code Online (Sandbox Code Playgroud)

布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content">

    <ImageButton
        android:id="@+id/ibNext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@android:drawable/ic_media_ff"
        android:layout_alignParentRight="true"/>
    <ImageButton
        android:id="@+id/ibLast"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@android:drawable/ic_media_rew"
        android:layout_toLeftOf="@id/ibNext"/>
    <TextView
        android:id="@+id/tvNews"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/nwNoNewAnswer"
        android:layout_toLeftOf="@id/ibLast"/>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

另一个xml:

<?xml …
Run Code Online (Sandbox Code Playgroud)

android widget

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

如何在Django中编写多行输入

我正在Django制作一个非常基本的BBS系统(如博客).

我已经创建了一个表单,用户可以在其中输入我称之为"正文"的内容,并在forms.py中将其声明为:

body = forms.CharField(widget= forms.Textarea, label="body",required=True)
Run Code Online (Sandbox Code Playgroud)

在models.py中,

body = models.TextField()
Run Code Online (Sandbox Code Playgroud)

我似乎无法编写多行文本...

把它们加起来,

我可以在我的表单中写多行,如:

您好,这是测试

这是样本测试2

333333

但是当我提交它时,我只看到了

您好,这是测试这是示例test2 333333


django

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

Django在没有FileField或ImageField和MEDIAROOT的特定文件夹中上载图像

我的应用程序需要在静态文件夹内的不同文件夹中上传不同的配置文件图像。还有一件事,我没有使用模型,我只想拍摄我在html输入文件中选择的图片并将其复制到特定文件夹。

这是我的文件夹树。我要保存上传的图像MYPROJECTFOLDER/static/profile/<TheUserSpecificFolder>/的位置是我不想使用的位置MEDIA_ROOT,因为在媒体根目录中,我无法为每个用户创建一个特定的文件夹。(我不知道这是否正确,是否可以在/ media /文件夹中为每个用户创建一个特定的文件夹而不使用ImageFieldFileField,请告诉我)。

这是我的文件夹树:

MYPROJECTFOLDER
|
|------myproject/
|
|------myapp/
|
|------static
|      |-------profile
|              |------folder_user1
|                     |------ uploadedpicture.jpg #Here is where I want to upload
|                     |------folder_user2
Run Code Online (Sandbox Code Playgroud)

这是我的 uploadpic.html

<form action="{% url 'upload' %}" enctype="multipart/form-data" method="POST">
  {% csrf_token %}
  <input type="file" name="avatar" accept="image/gif, image/jpeg, image/png">
  <button type="submit">Upload</button>
</form>
Run Code Online (Sandbox Code Playgroud)

这是我的views.py

from django.shortcuts import render, HttpResponse, redirect
from . import forms
import os

def upload(request):
  img = request.FILES['avatar']
  #This just create the …
Run Code Online (Sandbox Code Playgroud)

python django image-upload django-uploads python-3.6

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

对象 MotorLatentCommandCursor 不能在“await”表达式中使用

在Tornado中使用motor连接mongodb

我创建了一个电机连接

import motor.motor_tornado
from tornado.web import RequestHandler
client = motor.motor_tornado.MotorClient('mongodb://xxx')

class BaseHandler(RequestHandler):
    @property
    def db(self):
        return client['realtime-test']

class Account(BaseHandler):
    async def get(self,*args,**kwargs):
        all_user = await self.db.account.aggregate([
            {'$match': {'status': 1}},
            {'$group': {'_id':''}}
        ])
        print(all_user)
Run Code Online (Sandbox Code Playgroud)

当我开始时,我收到此消息:“对象 MotorLatentCommandCursor 不能在 'await' 表达式中使用”

不知道为什么~好像没什么问题

python tornado mongodb tornado-motor

0
推荐指数
1
解决办法
4387
查看次数