首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将当前活动用户作为外键添加到djangorestframework中的创建post模型中?

在Django REST Framework中,可以通过以下步骤将当前活动用户作为外键添加到创建post模型中:

  1. 导入必要的模块和类:
代码语言:txt
复制
from django.contrib.auth.models import User
from rest_framework import serializers
from rest_framework import viewsets
from rest_framework.permissions import IsAuthenticated
from rest_framework.authentication import TokenAuthentication
from django.views.decorators.csrf import csrf_exempt
from rest_framework.decorators import api_view, permission_classes, authentication_classes
  1. 创建Post模型和对应的序列化器:
代码语言:txt
复制
class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    user = models.ForeignKey(User, on_delete=models.CASCADE)

class PostSerializer(serializers.ModelSerializer):
    class Meta:
        model = Post
        fields = ['title', 'content']
  1. 创建Post视图集:
代码语言:txt
复制
class PostViewSet(viewsets.ModelViewSet):
    queryset = Post.objects.all()
    serializer_class = PostSerializer
    permission_classes = [IsAuthenticated]
    authentication_classes = [TokenAuthentication]

    def perform_create(self, serializer):
        serializer.save(user=self.request.user)
  1. 配置URL路由:
代码语言:txt
复制
from django.urls import include, path
from rest_framework.routers import DefaultRouter

router = DefaultRouter()
router.register(r'posts', PostViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

现在,当创建一个新的Post对象时,该对象将与当前活动用户关联,并保存到数据库中。同时,只有经过身份验证的用户才能执行此操作,确保安全性。

这里是一些相关链接和推荐的腾讯云产品:

  1. Django REST Framework官方文档:https://www.django-rest-framework.org/
  2. Django官方文档:https://docs.djangoproject.com/
  3. 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  4. 腾讯云云数据库MySQL版:https://cloud.tencent.com/product/cdb_mysql
  5. 腾讯云CDN加速:https://cloud.tencent.com/product/cdn

请注意,这里只提供了一种解决方案,实际情况可能因项目需求而异。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

DRF JWT认证(二)

JSONWebTokenSerializer序列化类全局钩子获取当前登录用户和签发token ··· payload = jwt_payload_handler(user)...方法通过传入用户名和密码处理获取当前用户,签发了token 认证源码分析 # 视图类内认证类搭配权限类使用 authentication_classes = [JSONWebTokenAuthentication...(模型条件),但是我们不做保存操作 视图 from .serializer import UserInfoSerializer class UserView(ViewSetMixin,APIView...从上面可以看到,除 CONTENT_LENGTH 和 CONTENT_TYPE 之外,请求任何 HTTP 首部转换为 META 时, 都会将所有字母大写并将连接符替换为下划线最后加上 HTTP...所以,一个叫做 X-Bender 头部将转换成 META HTTP_X_BENDER 。 *** 有错请指正,感谢~

1K20
  • Python 项目实践三(Web应用程序)第五篇

    在本节,我们将修改模型Topic,让每个主题都归属于特定用户。这也将影响条目,因为每个条目都属于特定主题。我们先来限制对一些页面的访问。...只要每个主题都归属于特定用户,我们就能确定数据库每个条目的所有者。 下面来修改模型Topic,在其中添加一个关联到用户。这样做后,我们必须对数据库进行迁移。...最后,我们必须对有些视图进行修改,使其只显示与当前登录用户相关联数据。...4 确定当前有哪些用户 我们迁移数据库时,Django将对数据库进行修改,使其能够存储主题和用户之间关联,下面来查看已创建所有用户ID。...3 迁移数据库 知道用户ID后,就可以迁移数据库了。 ? 现在可以执行迁移了。为此,在活动虚拟环境执行下面的命令: ? 验证迁移是否成功

    1.3K80

    难点理解&面试题问答

    (我们在这个文件创建蓝图对象) 视图函数在未来使用时候可能会有很多,因此我们在创建,单独创建一个管理视图函数文件,将所有的视图函数写到这个文件,这样的话,方便维护管理....id一致结果.返回是一个一个对象列表(评论id和用户id) 1.2我们先设定一个空列表,用来接收用户点赞过所有的评论编号,然后我们遍历这个对象列表,根据这个对象取出评论id,然后逐个添加到我们新建列表即可...request 对象取到cookie 判断当前用户是否登录 联想回答: HTTP是无状态,就是连接时数据互通,关闭后就是永别,永久性失忆,为啥是无状态呢?... ORM 一对多模型关系定义步骤 a)首先定义两个模型,比如Role和User,Role与User对应关系是一对多 b)在多一方添加一一方id作为,形成关联关系 c)如果想要通过一一方访问多一方...,那么在Role定义属性users = db.relationship(多一方模型名) d)如果想要通过多一方访问一一方,那么在上一步添加backre e)简单说就是一方添加关系属性,多方添加

    77320

    给你一个优秀Django工程模板

    调整settings配置 首先将xingxing目录下settings.py文件拷贝到settings目录下,创建dev.py和pro.py两个文件,主要用于开发配置和部署配置,将settings.py...文件数据库配置和DEBUG移到这两个文件,内容如下: ?...在settings.py文件把apps添加到环境变量 ? 修改语言和时区 ? 修改manage.py文件 将Django环境变量设置为开发环境 ?...增加多数据库配置 在xingxing目录下增加router.py文件 路由配置文件当中返回值是我们在DATABASES配置,默认是default,按照一定条件返回不同,每个内配置不同数据库连接...DATABASE_ROUTERS = ['xingxing.router.CustomRouter'] 设置自定义用户模型 在apps下增加users应用 在models.py下增加如下内容 from

    1.7K21

    小记 - Flask基础

    引入相关库,配置app对象数据库信息,创建数据库对象,并传入当前app对象 from flask import Flask from flask_sqlalchemy import SQLAlchemy...Users表 user_id user_name role_id() 1 1号管理 1 2 2号管理 1 3 用户A 2 实现数据模型 通过class实现,继承自db.Model 定义表名...(role) # 将添加对象加入会话 db.session.commit() # 将会话提交到数据库 # User表增加用户 # 此时role对象id为1,所以创建...指需要关联对象,可在Role类实例通过role.users查看该实例在User模型属性 backref参数:对关系提供反向引用声明。...可在User类实例通过user.role查看该实例在Role模型属性 class Role(db.Model): __tablename__ = 'roles' id = db.Column

    2.9K10

    猫头鹰深夜翻译:对于RestAPI简单基于身份权限控制

    权限控制模型有许多种,比如RBAC(基于角色权限控制),DAC(自由访问控制)等。虽然文档解释原则可以应用于各种模型,但我选择RBAC作为参考,因为它被广泛接受并且非常直观。...查看用户活动通常只会产生用户执行有限数量操作(如读取数据,提交表单)。深入观察这些用户行为会发现,这些行为通常一起执行,即执行A操作用户往往也会执行B操作。...但是,授权机制必须知道如何将每个权限与代码特定方法相匹配,并且有人必须记录所有可用方法(即create_order,view_order等)。...例如,可以将@secure实现为基于角色检查,但也可以使用访问控制列表(ACL)。比如,检查当前用户是否列在订单ACL列表。...比如,POST http://www.domain.com/bookings会创建一本新书,而GET http://www.domain.com/orders/12345会返回订单#12345详情。

    1K40

    如何在Django中集成JWT

    JWT简介 JWT(JSON Web Token)是一种流行跨域认证解决方案。它可以在令牌安全地传输用户身份信息,实现无状态认证机制。...优点: 跨域认证,适用于分布式微服务 减少数据库查询,优化性能 更好托管和扩展性 结构: header.payload.signature header 描述签名算法等元数据 payload 包含自定义用户数据...安装 pip install djangorestframework_simplejwt 2. 配置 在settings.py添加以下内容: INSTALLED_APPS = [ # ......这些视图已经被 djangorestframework_simplejwt 提供了,我们只需将其添加到urls.py文件即可: from django.urls import path from rest_framework_simplejwt.views...至此,我们了解了如何在Django REST框架中集成JWT认证,实现基于tokenAPI接口访问控制。JWT可以提供更强大用户认证方案。

    9610

    Django 多对多字段更新和插入数据实例

    )#添加普通和一对多值 #添加多对多值 方式一 book_obj.authors.add(*authors_obj_list) 方式二 for obj in authors_obj_list...从图可以看出生成了三张表,一个是book(书籍)表包含id,title两个字段,一个是author(作者表)包含id,name,email三个字段,这是我们刚刚在models.py文件创建两个模型,但是有一点需要注意是在...,Django允许指定一个用于管理多对多关系中间模型,然后就可以把这些额外字段添加到这个中间模型,具体方法就是在ManyToMany字段中指定through参数指定作为中介中间模型,修改上述models.py...在创建BookAuthor类最后使用了自定义名称,这个也可以不用指定,系统可以自动生成表名 仔细观察BookAuthor这个类,也就是我们前面讲到中间模型,同时我们看到在创建中间模型时候我们创建了两个...,这两个定义了两个模型之间是如何关联到一起 所以当创建多对多关系模型时候提倡使用through参数去指定并创建中间模型,这样比较方便我们进行字段扩展 那么此时我们又该如何添加和删除多对多关系呢

    4.3K30

    带你认识 flask 数据库

    要自动生成迁移,Alembic会将数据库模型定义数据库模式与数据库当前使用实际数据库模式进行比较。然后,使用必要更改来填充迁移脚本,以使数据库模式与应用程序模型匹配。...当前情况是,由于之前没有数据库,自动迁移将把整个User模型添加到迁移脚本。...你已经看到所有用户都有一个唯一id主键, 将用户动态链接到其作者方法是添加对用户id引用,这正是user_id字段所在位置。这个user_id字段被称为。...上面的数据库图显示了作为该字段和它引用id字段之间链接。这种关系被称为一对多,因为“一个”用户写了“多”条动态。...这可以确保你使用统一时间戳,无论用户位于何处,这些时间戳会在显示时转换为用户的当地时间。 user_id字段被初始化为user.id,这意味着它引用了来自用户id值。

    2.3K20

    Django REST Framework

    ,版本信息也可以放在HTTP协议 过滤信息,使用URL参数代表过滤 返回值: 每一个返回代码都有具体特定含义 返回格式:推荐固定具体格式 DjangoRestFramework(DRF) https...startproject TlxyDRF python manage.py startapp case01 配置settings 配置urls 创建三个模型:Student,Teacher,...ClassRoom 创建序列化器 创建视图聚合 序列化 序列化: 把系统运行一些实例等转换成一种可直接表示出来格式,用来保存,传输等 反序列化: 序列化反操作序列化/反序列化-DRF 实验步骤...user - 如果没有登录,则是anoymous - 可以用来判断用户是否登录成功Responserest_framework.response.Response用Renderer...ViewSet 把一系列操作打包放入一个类 list:GET retrieve:GET + id destroy:DELETE update:UPDATE create:POST

    2.2K63

    Laravel Eloquent 模型关联关系详解(上)

    ,第二个参数是关联模型类所属表,这里对应是 user_profiles 表 user_id 字段,第三个参数是关联表关联到当前模型所属表哪个字段,这里对应是 users 表 id...第二个参数是当前模型类所属表,在本例是 user_profiles 表 user_id 字段,拼接规则和 hasOne 那里类似,只不过这里是基于第四个参数关联关系名称 $relation:...->hasMany(Post::class); } 由于我们之间已经创建过 users 表和 posts 表,并且初始化过数据,所以我们可以直接通过动态属性方式来调用用户模型文章: $user...+下划线格式(注意不是复数格式,所以并不是对应默认表名), 第三个参数是 $foreignPivotKey 指的是中间表当前模型,默认拼接规则和前面一对一、一对多一样,所以在本例是 posts...第四个参数 relatedPivotKey 是中间表当前关联模型,拼接规则和 foreignPivotKey 一样,只不过作用于关联模型类,所以在本例是 tags 表 tag_id 字段。

    9.9K40

    django 关于User模型

    User模型基本用法: 创建用户: 通过create_user方法可以快速创建用户。这个方法必须要传递username、email、password。...一对一: 如果你对用户验证方法authenticate没有其他要求,就是使用username和password即可完成。但是想要在原来模型基础之上添加新字段,那么可以使用一对一方式。...,并且让她和User模型进行一对一绑定,以后我们新增字段,就添加到UserExtension上。...如果没有修改,那么会使用USERNAME来作为唯一字段。 REQUIRED_FIELDS:一个字段名列表,用于当通过createsuperuser管理命令创建一个用户提示。...如何使用这个自定义模型:比如以后我们有一个Article模型,需要通过引用这个User模型,那么可以通过以下两种方式引用。 第一种就是直接将User导入到当前文件

    1.1K30

    带你认识 flask 粉丝

    数据库在多这方使用了一个以表示一对多关系。在上面的一对多关系postuser_id字段,这个字段将用户每条动态都与其作者关联了起来。...此表都指向用户数据行,因为它将用户关联到用户。该表每个记录代表关注者和被关注者一个关系。...请注意,我没有像我为用户用户动态所做那样,将表声明为模型。因为这是一个除了没有其他数据辅助表,所以我创建时候没有关联到模型类。...我在is_following()中使用过滤条件是,查找关联表左侧设置为self用户且右侧设置为user参数数据行。查询以count()方法结束,返回结果数量。...请记住,查询是从Post类中发出,所以尽管我曾经得到了由数据库创建一个临时表来作为查询一部分,但结果将是包含在此临时表用户动态, 而不会存在由于执行join操作添加其他列。

    93610

    搭建restful api后台

    作为一个修电脑老家伙,有的时候要开发一个啥系统,就需要搞定后台,后台老板要搞定,才有底气。...:对象、行为 对象就是我们要操作对象,例如添加用户操作,那么对象就是user 行为有4种常用:查看、创建、编辑、删除 rest提出者很巧妙利用http现有方法来对应这4种行为: GET - 查看...POST - 创建 PUT - 编辑 DELETE - 删除 今天要讲的是rest_framework框架,它是基于Django,帮助我们快速开发符合RESTful规范接口框架。...序列化器另一个方便之处在于它可以和django模型层进行互动,从而大幅度减少了编码量。...建立一个用户登陆,就可以操作了 python manage.py createsuperuser 不建立一个用户,是无权限操作。 登陆后就可以看到操作按钮了 ? 查询下数据库,就有结果了: ?

    2K50

    PostgreSQL 教程

    | 使用 PostgreSQL 作为后端数据库管理系统开发应用程序。...主题 描述 插入 指导您如何将单行插入表。 插入多行 向您展示如何在表插入多行。 更新 更新表现有数据。 连接更新 根据另一个表值更新表值。 删除 删除表数据。...使用 SERIAL 自增列 使用 SERIAL 将自动增量列添加到。 序列 向您介绍序列并描述如何使用序列生成数字序列。 标识列 向您展示如何使用标识列。 更改表 修改现有表结构。...了解 PostgreSQL 约束 主题 描述 主键 说明在创建表或向现有表添加主键时如何定义主键。 展示如何在创建新表时定义约束或为现有表添加约束。...用户定义数据类型 向您展示如何使用CREATE DOMAIN和CREATE TYPE语句创建用户定义数据类型。 第 15 节.

    55210

    Django rest Framework入门 二 :DRF框架初体验

    笔记中提到代码repo:https://github.com/yexia553/drf 安装和配置修改 安装DRF 安装drf之前要先安装Django pip install djangorestframework...修改Djangosettings.py文件 将’rest_framework’添加到‘INSTALLED_APPS’,如下 INSTALLED_APPS = [ ......BookInfoSerializer(serializers.ModelSerializer): """定义序列化器""" class Meta: model = BookInfo # 指定作用模型...,可以在浏览器中看到当前数据数据; 页面的最下面是一个表格,右下角有一个POST按钮,这个按钮对应POST API,也就是创建一本书 http://127.0.0.1:8000/books/...API测试成功或者结果,如下: (venv): python drf_first_seen.py 测试查询具体书本信息API成功 测试创建书本API成功 测试查询所有书本信息API成功 测试更新

    8810
    领券