小编Kri*_*adi的帖子

Django模型 - 以小写形式设置默认字符串

如何设置小写的默认字符串?这是我的模特:

class User(models.Model):
    username = models.CharField(max_length=100, unique=True)
    password = models.CharField(max_length=64)
    name = models.CharField(max_length=200)
    phone = models.CharField(max_length=20)
    email = models.CharField(max_length=200)

    def __init__(self, *args, **kwargs):
        self.username = self.username.lower()
Run Code Online (Sandbox Code Playgroud)

我试过了,__init__但它不起作用.我希望每次保存新记录时都使用小写的用户名.谢谢.

django django-models

14
推荐指数
2
解决办法
7210
查看次数

Django-cors-headers 不工作

我的 django 版本是 1.8.6。我已将 corsheaders 文件夹复制到项目文件夹中。我已经 pip install django-cors-headers(版本 1.1.0)。这是我的设置.py:

    INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'MyWebsite_app',
    'storages',
    'rest_framework',
    'corsheaders',
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    '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',
    'django.middleware.security.SecurityMiddleware',
)

CORS_ORIGIN_ALLOW_ALL = True
Run Code Online (Sandbox Code Playgroud)

这是我的jquery:

function getLeague() {
$.ajax({
    url: 'http://otherdomain.ashx?username=xxx&password=xxx&sportsBook=xxx&sportsType=xxx&gameType=xxx',
    type: 'GET',
    dataType: 'json',
    success: function(data) {
        alert('Success');
    },
    error: function(data) {
        alert('Fail');
    }
    });
}
Run Code Online (Sandbox Code Playgroud)

执行 getLeague() 时,它不断警告“失败”。当我看到控制台时,它显示“XMLHttpRequest 无法加载http://otherdomain.ashx?username=xxx&password=xxx&sportsBook=xxx&sportsType=xxx&gameType=xxx。请求的源上不存在 Access-Control-Allow-Origin 标头”。我应该在 urls.py 或 view.py 中添加一些代码吗?谢谢。

python django ajax jquery django-cors-headers

5
推荐指数
1
解决办法
3473
查看次数

如何在perform_create视图集中添加用户(djangorest框架)?

我想做一个“评论”表。在表中,将有一个包含创建评论的 user_id 的字段。与评论表相关的用户来自Django默认用户模型。这是评论模型:

class Comment(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    content = models.TextField()
    pub_date = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

这是评论序列化器:

class CommentSerializer(serializers.ModelSerializer):

    class Meta:
        model = Comment
        fields = '__all__'
Run Code Online (Sandbox Code Playgroud)

这是创建新评论的视图集:

class CommentViewSet(mixins.CreateModelMixin, viewsets.GenericViewSet):
    queryset = Comment.objects.all()
    serializer_class = CommentSerializer
    permission_classes = (IsAuthenticated,)

    def perform_create(self, serializer):
        serializer.save(user=self.request.user)
Run Code Online (Sandbox Code Playgroud)

我还将用户与 django rest jwt 集成以进行授权。这是我发送到 API 的标头和数据。

标题:

授权:持有者{jwt token}

内容类型:application/json

身体:

{ "content": "这是评论" }


但我得到这样的回应:

{ "user": [ "此字段为必填项。" ] }


如何修复序列化器,以便它从令牌(request.user)中检索用户?

django-serializer django-rest-framework django-rest-viewsets django-rest-framework-jwt

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