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

django 3-如何将文章模型外键设置为已登录的用户id?

在Django 3中,可以通过使用ForeignKey字段将文章模型的外键设置为已登录的用户ID。ForeignKey字段表示一个模型与另一个模型的关联关系,它将在数据库中创建一个外键字段,用于存储关联模型的主键。

以下是将文章模型外键设置为已登录用户ID的步骤:

  1. 首先,在你的应用程序的models.py文件中定义文章模型。假设你的文章模型名为Article,可以使用ForeignKey字段将其与用户模型关联起来。示例代码如下:
代码语言:txt
复制
from django.db import models
from django.contrib.auth.models import User

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    # 其他字段...

在上面的代码中,author字段是一个ForeignKey字段,它将与Django内置的User模型关联。on_delete=models.CASCADE参数表示当关联的用户被删除时,与之关联的文章也会被删除。

  1. 接下来,你需要确保用户已经登录,并将当前登录用户的ID与文章模型的外键字段关联起来。你可以在视图函数中完成这个操作。示例代码如下:
代码语言:txt
复制
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required

@login_required
def create_article(request):
    if request.method == 'POST':
        title = request.POST['title']
        content = request.POST['content']
        author = request.user  # 获取当前登录用户
        article = Article.objects.create(title=title, content=content, author=author)
        # 其他操作...
        return redirect('article_detail', article_id=article.id)
    else:
        # 渲染创建文章的表单页面
        return render(request, 'create_article.html')

在上面的代码中,request.user表示当前登录的用户对象。通过将author字段设置为request.user,你将当前登录用户的ID与文章模型的外键字段关联起来。

需要注意的是,为了确保用户已经登录,我们使用了@login_required装饰器。如果用户未登录,@login_required装饰器将会重定向用户到登录页面。

这样,当用户创建一篇文章时,文章模型的外键字段将自动设置为当前登录用户的ID。

关于Django的更多信息和使用方法,你可以参考腾讯云的Django产品介绍

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

相关·内容

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

注销后,访问http://localhost:8000/users/login/,你将看到类似于图19-4所示登录页面。输入你在前面设置用户名和密码,将进入页面index。。...1 使用@login_required 限制访问 Django提供了装饰器@login_required,让你能够轻松地实现这样目标:对于某些页面,只允许登录用户访问它们。...login_required()代码检查用户是否登录,仅当用户登录时,Django才运行topics()代码。如果用户登录,就重定向到登录页面。...只要每个主题都归属于特定用户,我们就能确定数据库中每个条目的所有者。 下面来修改模型Topic,在其中添加一个关联到用户。这样做后,我们必须对数据库进行迁移。...4 确定当前有哪些用户 我们迁移数据库时,Django将对数据库进行修改,使其能够存储主题和用户之间关联,下面来查看创建所有用户ID

1.3K80

Django | allauth】登录_注册_邮箱验证_密码邮箱重置

**该文章收录专栏** ✨---【Django | 项目开发】从入门到上线 专栏---✨ @TOC 一、安装与配置 安装allauth包, pip install allauth 我们假设你已经创建好了项目...AUTO\_SIGNUP (=True):使用从社会帐户提供者检索字段(如用户名、邮件)来绕过注册表单 LOGIN\_REDIRECT\_URL (="/") 设置登录后跳转链接 ACCOUNT...\_LOGOUT\_REDIRECT\_URL (="/") 设置退出登录后跳转链接 二、邮箱配置 配置邮箱(这里配置qq例) EMAIL\_HOST: 'smtp.qq.com' # 邮件服务器地址...因为每个开发者对用户所需提供额外信息需求都不是一样,所以django-allauth没有提供这个视图和URL。...图片 参考文献: allauth登录注册与邮箱验证 django发送邮箱 扩展用户自带user模型(非allauth实现) related_name def _ str_ (self) def _

3.8K10

Python:Django搭建博客

简介 学完 Django2.x 可以搭建一个个人博客练练手 教程 创建项目 通过 pycharm 创建博客项目与虚拟环境 修改相关设置 允许任何域名 在开发和测试时候可以将这里填 *,后期部署上线后修改为指定域名即可...这一阶段数据库配置已完成,这里产生数据库是 Django 自带一些库 其他设置 区域语言设置,防止 admin 界面乱码 # 设置语言中文 LANGUAGE_CODE = 'zh-hans'...管理页面表示 Django-admin 设置成功 数据库表分析 文章表 字段 类型 备注 id PrimaryKey 主键 title CharField 标题...ForeignKey ,分类 id tag_id ManyToManyField ,标签 id 分类表 字段 类型 备注 id PrimaryKey...备注 id PrimaryKey 主键 user_id ManyToManyField 用户id blog_id ManyToManyField

54500

关于“Python”核心知识点整理大全59

下面来修改模型Topic,在其中添加一个关联到用户。这样做后,我们必须对数据库 进行迁移。最后,我们必须对有些视图进行修改,使其只显示与当前登录用户相关联数据。 1....中添加了字段owner,它建 立到模型User关系。...最简单办法是,将既有主题都 关联到同一个用户,如超级用户。为此,我们需要知道该用户ID。 下面来查看创建所有用户ID。...将所有既有主题都关联到管理用户ll_admin,我输入了用户ID值1(见6)。并非必须使用 超级用户,而可使用创建任何用户ID。...19.3.4 保护用户主题 我们还没有限制对显示单个主题页面的访问,因此任何登录用户都可输入类似于 http://localhost:8000/topics/1/URL,来访问显示相应主题页面

11510

使用 Django + Vue.js 开发个人博客网站(完整版附源码)—— Python-课程设计-期末项目

加上 属性(属性不全,在概念模型中会补全): ? 然后设计它 概念模型 : ? 对应 物理模型 : ?...在物理模型中,由于存在一对多关系,所以文章表和评论表中加上了两个 约束 。...但是要在配置文件中说明自己已经更改了用户类: # 替换系统用户模型我们自定义用户模型 AUTH_USER_MODEL = 'users.User' 自动生成 users 表: ?...: class Article(models.Model): """ 文章实体类 """ # 约束: 和用户表关联在一起: 设置级联删除: 即删除用户同时会删除该用户所有文章...报错找不到,因为 Django 默认跳转连接是 accounts,需要在设置里修改: # 设置登录用户跳转路由 LOGIN_URL = '/login/' ? ?

5.1K30

Python Web 聊天室开发(三):用户认证和登录

在前两篇文章中: 在第一篇文章中,我们借助 Django 3 + Channels + Redis 实现了一个WebSocket 连接 Web 在线聊天室。...定义用户模型 用户模型我们使用 Django 提供了AbstractUser,这保留了 Django 自带了用户模型所有功能,并且后期还能自定义扩展: from django.contrib.auth.models...字段修改为关联到User模型上: class Message(models.Model): username = models.ForeignKey(User,on_delete=models.CASCADE...verbose_name="写入时间") class Meta: ordering = ['-create_time'] 最后,在settings.py文件中指定User模型系统认证模型...登录页: 登录错误信息提示: 完整动图演示: 如果未登录用户直接访问聊天房间URL,则会跳转到登录首页: 这样,我们就完成了在线聊天室用户认证功能扩展。

2K20

Django框架学习(四)

order_by 1.7关联查询 1、查询和指定对象关联数据(重点掌握) 由一查多:一对象.多类名小写__set.all() 由多查一:多对象.属性 2、通过模型类进行关联查询 查图书:一类.objects.get...|filter(多类名__字段__条件=值) 查英雄:多类.objects.filter(属性__字段__条件=值) 2.查询集 注意:对于queryset类对象,可以继续调用之前任何一个查询函数...3.admin站点 Django框架提供了一个admin站点,可以让用户来管理网站数据表内容。...3.1使用 1.语言和时区本地化 2.创建管理员用户 python manage.py createsuperuser 3.在admin.py中注册模型类 4.自定义admin站点管理页面 1)在admin.py...使用: 1、在配置文件中设置配置项MEDIA_ROOT=‘上传文件保存目录’ 2、定义模型类时,图片字段类型使用’imageField’ 3、迁移生成表,并在admin.py注册模型类,直接登录admin

1.5K41

Django实战-小程序服务端登录验证-上

设计模型时,需要考虑用户和应用之间有怎样联系,用户可以添加多个应用和删除某个应用,在这样需求下,可以将用户和应用设置成多对多关系,即一个用户可以关联多个应用。...一、模型(Model)设计 本项目的User 模型,没有继承Django自带AbstractBaseUser类。而是 models.Model 自定义用户模型。...models.ManyToManyField 是用户和应用多对多。...流程 1.使用微信小程序登录和获取用户信息Api接口 2.把Api获取用户资料和code发送给django后端 3.通过微信接口把code换取成openid 4.后端将openid作为用户名和密码...5.后端通过JSON web token方式登录,把token和用户id传回小程序 6.小程序将token和用户id保存在storage中 下次请求需要验证用户身份页面时,在header中加入token

1K10

Django3.2边学边记—Adimn站点管理

准备工作 创建管理员用户名和密码:  1 python manage.py createsuperuser   根据提示创建用户名 密码 在admin.py中注册模型类 1234567 from django.contrib...过滤器 用 list_filter 来激活管理更改列表页面右侧侧栏过滤器,如下截图所示: list_filter 应是一个列表或元组,参数字段可以是模型字段,包括字段(注意list_display...是不能直接接收字段),会将对应字段值列出来,一般用于快速过滤有重复值字段。...例如,如果 search_fields 设置 ['first_name', 'last_name'],用户搜索 john lennon',Django 会做相当于这个 SQL WHERE 子句。...我理解就是分组整体匹配(Django3.2新增),例如,如果用户搜索 "john winston" 或 'john winston',Django 会做相当于这个 SQL  WHERE 子句: 1

1.3K30

关于“Python”核心知识点整理大全58

请尝试使用注册页面创建几个用户名各不相同用户账户。 在下一节,我们将对一些页面进行限制,仅让登录用户访问它们,我们还将确保每个主 题都属于特定用户。...19.3.1 使用@login_required 限制访问 Django提供了装饰器@login_required,让你能够轻松地实现这样目标:对于某些页面,只 允许登录用户访问它们。...限制对topics页面的访问 每个主题都归特定用户所有,因此应只允许登录用户请求topics页面。...login_required()代码检查用户是否登录,仅当用户登录时,Django才运行topics() 代码。如果用户登录,就重定向到登录页面。...实现这种重定向,我们需要修改settings.py,让Django知道到哪里去查找登录页面。

9810

Django admin 一些有用设置

设置显示字段      fk_fields = ('machine_room_id',) 此处比较简单,自己尝试一下即可。...caption') 2、筛选器 筛选器是Django后台管理重要功能之一,而且Django我们提供了一些实用筛选器。...过滤器如果是需要遵循这样语法:本表字段__表要显示字段。如:“user__user_name” 3、颜色显示 想对某些字段设置颜色,可用下面的设置: ?...唯一区别就是 这种方法 是登录http://ip/admin/  站点和用户组在一起 ? 而第一种方法是分开。 5.通过当前登录用户过滤显示数据 官方文档介绍: ?...修改模版 chang_form.html 让普通用户 无法看到 “历史” 按钮。 默认 普通用户下 是存在 “历史” 按钮: ? 此时  chang_form.html  代码: ?

2.5K70

Django项目知识点(四)

拿到要修改用户对象 user = User.objects.filter(id=user_id).first() # 1.1 判断用户是否存在 if not...file_url','file_name','title','desc','image_url').filter(is_delete= False) select_related() 如果我要拿这个模型通过绑定另外一个模型...这样就可以引用模型字段值并使用它们执行数据库操作,而无需实际将它们从数据库中拉出到Python内存中 说白了就是我从数据库拿东西,但是有些需要字段没有,要通过绑定appmodel拿。...但是名称又是app__字段来命名,这样我要改名称,而且拿第一次model,放在python内存中,再拿通过绑定另一个model,又要执行第一次步骤,那个效率就不行了,干嘛我不一起拿,所以会用annotate...banner模型绑定news中title字段,拿出来它叫news__title,我要给它换个名字叫news_title,这就是注释。

1.5K30

Django 学习笔记之模型高级用法(上)

题图:by thefolkpr0ject from Instagram 前面有两篇文章简单介绍 Django 模型,这一部分算是基础知识。...2.1 ForeignKey 1) on_delete 在 Django 2.0 中,设置时需要添加一个 on_delete选项。本身涉及到两个表数据,况且在数据库中是有约束行为。...SET_NULL: 置空模式,删除时候,字段被设置空,前提就是`blank=True, null=True`,定义该字段时候,允许空。...SET_DEFAULT: 置默认值,删除时候,字段设置默认值,所以定义时候注意加上一个默认值。 SET(): 自定义对应实体值。...4) related_name 用于关联对象反向引用模型名称。主要用于反向查询,即模型实例通过管理器返回第一个模型所有实例。

2K30

35.Django2.0文档

C:根据用户输入委派视图部分,由 Django 框架根据 URLconf 设置,对给定 URL 调用适当Python 函数  由于 C 由框架自行处理,而 Django 里更关注模型(Model...它有一个或多个作者(和作者是多对多关联关系[many-to-many]), 只有一个出版商(和出版商是一对多关联关系[one-to-many],也被称作          [foreign key...默认地,管理工具使用`` 下拉框`` 来展现`` `` 字段。但是,正如`` 多对多字段`` 那样,有时候你不想忍受因装载并显示这些选项而产生大量开销。...解决这个问题办法是使用`` raw_id_fields`` 选项。它是一个包含字段名称元组,它包含字段将被展现成`` 文本框`` ,而不再是`` 下拉框`` 。...首先,这有一组三个布尔型标记: 活动标志:它用来控制用户是否已经激活。 如果一个用户帐号这个标记是关闭状态,而用户又尝试用它        登录时,即使密码正确,他也无法登录系统。

11.3K100

探索 PythonDjango 支持分布式多租户数据库,如 Postgres+Citus

将租户列引入属于帐户模型 1.1 向属于某个帐户模型引入该列 1.2 在属于一个帐户每个 ManyToMany 模型 account_id 引入一个列 2....将租户列介绍给我们想要分发缺少它模型 更改分布式表主键以包含租户列 更新模型以使用 TenantModelMixin 分发数据 将 Django 应用程序更新范围查询 准备横向扩展多租户应用程序...分布式表和引用表之间不需要更改。...此时,Django 应用程序模型准备好与 Citus 后端一起工作。您可以继续将数据导入新系统并根据需要修改视图以处理模型更改。...,当前租户对象可以在用户登录时存储 SESSION 变量, 并且视图操作可以 set_current_tenant 到该值。

2K10

37.Django1.11.6文档

引用User模型 如果直接引用User(例如,通过引用),在AUTH_USER_MODEL设置更改为不同用户模型项目中,代码将不能工作。...此方法将返回当前活动用户模型 — 如果指定了自定义用户模型,否则返回User。 在定义到用户模型或多对多关系时,应使用AUTH_USER_MODEL设置指定自定义模型。 ...指示用户账号是否激活。 我们建议您将此标志设置False而不是删除帐户;这样,如果您应用程序对用户有任何,则不会中断。 它不是用来控制用户是否能够登录。 ...例如,这可以基于模型实例(作为关键字参数obj传递)。 使用具有两个或多个模型与同一个父模型 有时可能有多个到同一个模型。 ...,将文章状态从“草稿”更新发布”。

24.3K80

django2实战2.创建博客应用创建应用文章字段设计激活应用开启后台将post模型注册到后台自定义文章显示字段增加可选操作

而淘宝下聚划算属于一个应用 在django中,一个应用是由模型、视图、模板以及url配置组成。...一个博客最重要数据就是文章,接下来我们设计文章字段 一篇文章字段有:标题、摘要、作者、内容、发布时间、创建时间、更新时间、状态 数据对应模型,即blogmodels.py 代码实现: blog..., 对应sql中varchar类型,max_length指定了该字段最大长度 slug: url标识,文章url格式:yyyy/mm/dd/slug/, unique_for_date 表示slug...与日期组合是惟一,即每篇文章url不可重复 author: 文章作者,此字段是,与user中相关联,当user表用户删除时,该用户发表文章也将被删除 详细说明 body: 文章详情,...过滤 下一节将讲解如何使用django模型查询语句。如果你感兴趣,请关注我django2实战文集 如果觉得本文对你有所帮助,点个赞,或者赏杯咖啡钱,你认可对我很重要

1K30
领券