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

使用createview和modelform在django中自动将登录用户设置为作者

在Django中,可以使用createviewmodelform来自动将登录用户设置为作者。下面是完善且全面的答案:

在Django中,createview是一个通用视图类,用于处理创建对象的请求。modelform是一个表单类,可以根据模型自动生成表单字段。通过结合这两个功能,我们可以实现自动将登录用户设置为作者的功能。

首先,我们需要定义一个继承自CreateView的视图类,并指定相关的模型和表单类。假设我们的模型是Post,表单类是PostForm,代码如下:

代码语言:txt
复制
from django.views.generic import CreateView
from .models import Post
from .forms import PostForm

class PostCreateView(CreateView):
    model = Post
    form_class = PostForm

接下来,我们需要在PostForm中添加一个隐藏字段,用于存储登录用户的信息。可以使用forms.HiddenInput来隐藏该字段,代码如下:

代码语言:txt
复制
from django import forms
from .models import Post

class PostForm(forms.ModelForm):
    author = forms.ModelChoiceField(widget=forms.HiddenInput, queryset=Post.objects.none())

    class Meta:
        model = Post
        fields = ['title', 'content']

在上述代码中,我们添加了一个名为author的隐藏字段,并使用forms.HiddenInput来隐藏它。queryset=Post.objects.none()表示该字段不会从数据库中获取选项。

接下来,我们需要在视图类中重写form_valid方法,以将登录用户设置为作者。可以通过self.request.user来获取当前登录的用户,代码如下:

代码语言:txt
复制
from django.contrib.auth.mixins import LoginRequiredMixin

class PostCreateView(LoginRequiredMixin, CreateView):
    # 省略其他代码

    def form_valid(self, form):
        form.instance.author = self.request.user
        return super().form_valid(form)

在上述代码中,我们使用form.instance.author将登录用户设置为作者。

最后,我们需要在URL配置中将该视图类与相应的URL路径关联起来,代码如下:

代码语言:txt
复制
from django.urls import path
from .views import PostCreateView

urlpatterns = [
    path('post/create/', PostCreateView.as_view(), name='post_create'),
]

现在,当用户访问/post/create/路径时,将会显示一个表单页面。用户填写表单并提交后,将会自动创建一个带有登录用户作为作者的Post对象。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云服务器(CVM):提供可扩展的云服务器实例,适用于各种应用场景。详情请参考:腾讯云服务器
  • 腾讯云数据库MySQL版(TencentDB for MySQL):提供高性能、可扩展的云数据库服务,适用于各种规模的应用。详情请参考:腾讯云数据库MySQL版
  • 腾讯云对象存储(COS):提供安全、稳定、低成本的云存储服务,适用于存储和处理各种类型的数据。详情请参考:腾讯云对象存储
  • 腾讯云人工智能(AI):提供丰富的人工智能服务和解决方案,包括图像识别、语音识别、自然语言处理等。详情请参考:腾讯云人工智能
  • 腾讯云物联网(IoT):提供全面的物联网解决方案,包括设备接入、数据管理、应用开发等。详情请参考:腾讯云物联网
  • 腾讯云区块链(BCS):提供安全、高效的区块链服务,适用于构建可信任的分布式应用。详情请参考:腾讯云区块链

以上是关于在Django中使用createviewmodelform自动将登录用户设置为作者的完善且全面的答案。希望对您有帮助!

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

相关·内容

django 1.8 官方文档翻译: 3-4-3 使用基于类的视图处理表单

这些通用的视图将自动创建一个ModelForm,只要它们能知道使用哪一个模型类: 如果给出model属性,则使用该模型类。 如果get_object() 返回一个对象,则使用该对象的类。...如果你想使用一个自定义的ModelForm(例如添加额外的验证),只需简单地在你的视图上设置form_class。...在这个例子CreateView UpdateView 使用 myapp/author_form.html DeleteView 使用 myapp/author_confirm_delete.html...模型request.user 为了跟踪使用CreateView 创建一个对象的用户,你可以使用一个自定义的ModelForm 来实现这点。...login_required() 来装饰这个视图,或者form_valid() 处理未认证的用户

1.8K20

djangoModelForm多表单组合的解决方案

2、从模型创建表单 django对于MVC的C与M间的映射是非常体贴的,集中体现Model模型(比如模型的权限与用户认证)。...这里仅以CreateView例说明,因为它相对最复杂,接下来的多ModelForm的提交也是CreateView上进行的。...通用视图使用时,只需要承继后,再设置model或者form_class即可。...比如CreateView就会由django自动的把页面上POST出的form数据解析到model生成的表单(或者form_calss指定的ModelForm类型表单),同时调用表单的save方法数据添加到模型对应的数据库表...所以,在用CreateView、一个模型、一个模板实现添加一行记录的功能时是多么简单,因为这些父类会自动生成object,渲染到模板,解析form表单,save到数据库

3.3K20

Django数据库操作之save与update的使用

例如数据更新操作,对单条记录,可以使用save或者是update两种方式 Django工程下的settings.py下log设置DEBUG,即可查看saveupdate分别执行了哪些SQL语句...使用Django的数据模型操作数据库时,了解这些底层的SQL操作很有必要。...补充知识:如何理解Django的save(commit=False)方法save_m2m()方法 什么时候使用save(commit=False)方法,save_m2m方法以及如何使用Django表单...我们创建了一个叫文章Article的模型,里面包含title, body作者author等多个字段,其中author字段非空null=False。...我们由Article模型创建了一个ArticleForm表单,可以让用户发表新文章,但是我们故意把author字段除外了,因为我们不希望用户编辑作者

2.8K10

利用Django通用类视图(class

框架的好处就是,它已经用户处理了绝大多数的场景的重复代码,提供了封装好的接口,使得我们开发十分方便。...整体上就可以分为查看、修改两个类型。下面,我们来通过一个例子来展现一下这几个View怎么使用。假设我们需要实现一个用于ssh验证的web服务。...如果你Django设置settings.py的TEMPLATES下配置了'APP_DIRS': True 的话,Django默认会去渲染/project/app_name/templates/app_name...web开发约定俗成的规则是,对于查询类的请求用get,对于修改类的请求用post。Django设计的时候也遵循了这个原则,所以以下的每个view,都具有支持getpost的函数。...,Django已经自动根据model、form_class自动处理了form的所有字段。

1.5K20

Django 如何使用日期时间选择器规范用户的时间输入示例代码详解

如果你的模型中含有 datetime 类型的字段,表单需要用户输入日期时间,那么你如何保证不同用户输入的时间都遵循一定的格式 (DD/MM/YYYY 或者 YYYY-MM-DD) 是个必须要考虑的问题...小编今天尝试以最少的代码教你实现如何在 Django 项目中实现日期时间选择器 DateTimePicker。 ?...,并设置输入日期时间格式。...如果你模型 DateTimeField 的字段名为 visit_date,你只需 id_visit_date 再生成一个实例即可。...总结 到此这篇关于Django 如何使用日期时间选择器规范用户的时间输入的文章就介绍到这了,更多相关 Django 如何使用日期时间选择器规范用户的时间输入内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持

5.9K20

django入门:Admin管理系统及表单(干货)

作者:Kuky_xs 博客:https://www.jianshu.com/p/8cdf099e974f 前言 《django入门:环境及项目搭建》 《django入门:数据模型》 《django入门:...admin 主界面 当然,django 自带的 admin 管理系统不止那么点功能,接着我们通过定义一些参数,来定制 admin 界面 自定义 admin # 使用后台管理的时候,可能需要自己定制...admin 管理界面 为了可以用户进行交流,我们需要获取用户的一些评论之类的,所以我们需要通过表单让用户提交信息,接下来我们将了解下 django 的表单 django 表单 存在相应模型(POST...方式) 1.应用文件夹下创建 forms.py 文件存放表单 from django import forms from .models import Post # 表单类必须继承 forms.ModelForm...或者 forms.Form 类,如果有相应的模型,则使用 ModelForm 更方便 class PostForm(forms.ModelForm): class Meta:

2.8K20

Django 实战2:利用 Session 实现自动登录机制

sessions 功能用是跟踪用户的状态,经常结合 Cookie 功能实现自动登录功能。 所谓的“自动登录”指的是:我们登录一些网站,不关闭浏览器以及距离上次登录时间不是很长的情况下。...无论我们新的标签页打开网站,还是关闭页面重新打开网站,登录状态一直保持着。本文内容有两个:一是利用 Django 实现自动登录功能,二是揭开“自动登录”的神秘面纱。...设置 True, 那么关闭浏览器之后,需要重新登录。...浏览器当中,这个值是保存为sessionid session_data: 这是一个加密后的信息,用来保存用户密码等信息 expire_data: 过期时间,Django可以设置过期时间 新的标签页打开首页...这证明能自动登录。 如果用户退出登录,再访问首页。这时会发现看不到了 username 信息了。 5 小结 实现自动登录功能其实不难,只需要在 Django 的 Sessions 组件。

1.7K30

Django基础——ORM字段字段参数

Django项目中设置连接数据库的相关配置(告诉Django连接哪一个数据库)   # 数据库相关的配置   DATABASES = {   'default': {   ...2. default 该字段默认值 3. unique 如果设置unique=True 则该字段在此表必须是唯一的 。...一对多(出版社和书);1对多  ,外键通常设置多的那一边; publisher = models.ForeignKey(to="Publisher") 数据库实际 生成的是一个 publisher_id...多对多(作者和书);多对多,通常设置正向查询多的那一边;比如我用author 查询 book 比较多,则把外键放在author....ORM的用法   OneToOneField(to="") 举例:作者作者详情是一对一的;跟一对多,用法相同,只不过detail里面的不能重复;在数据库也是多一个detail_id 字段 总结

1.6K20

django模型动态修改参数,增加 filter 字段的方式

(Field) - 字符串类型,Django Admin以及ModelForm中提供验证 Ipv4Ipv6 - 参数: protocol,用于指定Ipv4或Ipv6, 'both',"ipv4","ipv6...) - 字符串类型,Django Admin以及ModelForm中提供验证 URL SlugField(CharField) - 字符串类型,Django Admin以及ModelForm中提供验证支持...,Django Admin以及ModelForm中提供对UUID格式的验证 FilePathField(Field) - 字符串,Django Admin以及ModelForm中提供读取文件夹下文件的功能...其它属性详情请查看:官方文档 关系字段 ForeignKey 外键类型ORM中用来表示外键关联关系,一般把ForeignKey字段设置 ‘一对多’’多’的一方。...through:使用ManyToManyField字段时,Django自动生成一张表来管理多对多的关联关系。

3.8K31

python测试开发django-109.ModelForm模型表单的使用

前言 django的表单有2种:forms.Form forms.ModelFormModelForm顾名思义是模型表单结合起来,这个功能是非常强大的!...Model模型 Model模型设计如下 from django.db import models # 作者-上海悠悠 QQ交流群:717225969 # blog地址 https://www.cnblogs.com...模型表单 视图中,定义一个类DetailModelForm,这个类要继承forms.ModelForm,在这个类再写一个原类Meta from django.forms import models...# 作者-上海悠悠 QQ交流群:717225969 # blog地址 https://www.cnblogs.com/yoyoketang/ class DetailModelForm(forms.ModelForm...帮助提示信息 widgets 自定义插件 error_messages 自定义错误信息 field_classes 模型的字段类型查询定义表单字段类型,默认情况模型字段自动转表单字段类型

1K40

Python自动化开发学习-Django

创建超级管理员 使用下面的命令,创建超级管理员账户: python manage.py createsuperuser 根据提示,输入用户密码后,创建成功后,就可以去Web界面登录了。...这里要注意,输入了新用户用户名、密码确认密码后,就完成了用户的创建,但是这个用户并不能登录。随后会有一个修改用户的界面,都是中文就不细说了。...并且django的User表做了一对一的关联。也就是用户的认证信息用户其他信息拆开来,认证信息直接使用django的User表。另外这里还有个角色表,留着做账号的权限管理的。...# 验证用户密码的方法 from django.contrib.auth import login # 登录,上面只是验证,这个才是登录的动作,会帮我么创建session 下面是例子: from...其实不是每个类创建ModelForm,而是forms.py里只提供一个动态创建类的方法,然后要用的时候调用这个方法,生成一个类,然后直接实例化使用

1.7K30

django orm(2)

聚合函数 这里的聚合函数SQL里的聚合函数对应,使用前需要先进行模块的导入: from django.db.models import Max,Min,Sum,Count,Avg 常用的聚合函数有求最大值...通过下面几个例子看Django的分组查询: 1.统计每一本书的作者的个数 这里就需要每一本书一组,然后统计每本书的作者的个数: res = models.Book.objects.annotate(author_num...说明:如果Q对象关键字参数一起使用,Q对象必须放在前面。...unique 如果设置unique=True 则该字段在此表必须是唯一的 。 db_index 如果db_index=True 则代表着为此字段设置索引。 default 该字段设置默认值。...(CharField) - 字符串类型,格式必须逗号分割的数字 UUIDField(Field) - 字符串类型,Django Admin以及ModelForm

1.1K21

12.Django基础十之FormModelForm组件

与此同时我们好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度格式等正不正确。如果用户输入的内容有错误就需要在页面上相应的位置显示对应的错误信息.。   ...】 【插件】,字段用于对用户请求数据的验证,插件用于自动生成HTML; initial     初始值,input框里面的初始值。...举个例子,你也许会有个Book 模型,并且你还想创建一个form表单用来添加编辑书籍信息到这个模型。 在这种情况下,form表单定义字段将是冗余的,因为我们已经模型定义了那些字段。   ...,会覆盖modelform的这个字段,那么modelform下面关于这个字段的设置就会被覆盖,比如果设置插件啊,error_messages啊等等, r_password = forms.CharField...#首先导入ModelForm from django.forms import ModelForm #视图函数,定义一个类,比如就叫StudentList,这个类要继承ModelForm,在这个类再写一个原类

3.1K20

Django源码学习-18-ModelForm

Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计Form(表单)的使用。...使用 Django 开发 Web 程序,阶段一,手动对表单进行增、删、改、查,手动把ORM操作获取的数据渲染到模板;阶段二,Form 类,自动生成标签(input、select),并对用户输入的数据做规则验证...;阶段三,ModelForm 是FormDjango的Model数据库模型结合体,可以简单、方便对数据库进行增加、编辑操作和验证标签的生成。...可以像使用Form类一样自定义局部钩子方法全局钩子方法来实现自定义的校验规则。...如果不重写具体字段并设置validators属性的话,ModelForm是按照模型字段的validators来校验的。 ?

69620

37.Django1.11.6文档

Django应用程序添加到INSTALLED_APPS时,在下面描述的常规位置定义的任何标签将自动模板中加载。...会根据模型类的字段属性,HTML自动生成对应表单标签标签属性。...选择验证后端 用户登录时,用户的ID用于身份验证的后端保存在用户的会话。 这允许相同的身份验证后端将来的请求获取用户的详细信息。 ...把它设置 None 来把它从 URL 移除,当你想把通不过检查的用户重定向到没有next page 的非登录页面时。...这对可重用应用的作者是很有用的, 因为他可以委托所有的请求, 例如控制匿名用户访问,给这个认证后端, 而不需要设置它 授权非活动用户 非活动用户is_active字段设置False的用户

24.3K80
领券