如何设置小写的默认字符串?这是我的模特:
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 版本是 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 中添加一些代码吗?谢谢。
我想做一个“评论”表。在表中,将有一个包含创建评论的 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