在实际的开发中,我们有些操作常常是要记录当前操作的用户的,
比如我在下面的例子中,用户可以自定义话题,那么,所有用户自定义
的话题,就需要记录是哪个用户定义了它,下面我就结合Django自带
的CreateView来记录下今天的Django学习笔记.
首先是models.py
这里添加get_absolute_url
方法,是因为在CreateView
创建成功之后,
后重定向到model
的get_absolute_url所指向的地址,如果这里不实现该方法,
也是可以的,就需要在CreateView中给出success_url
属性,
或实现get_success_url()
方法,这三种方式是一样的作用,
就是指定创建成功之后的重定向的位置.
然后是views.py
在这里,重写了get_form_kwargs
,
是因为在下面的forms.py
中,TopicForm
需要用到request
,
所以这里就把request
放到其初始化方法中,
这样就可以在forms.py
中获取到当前用户
其中还用到了form_class
这个属性,用户指定创建时适用的表单.
这个类我是在forms.py
里面定义的,如下:
这里的fields
,是指定表单里要包含哪些信息,
因为create_time
是系统自动在创建时添加的,所以不需要.
而create_user
是因为我们要自动添加为当前用户,
所以也不需要,于是就只需要一个title
就够了.
这里重写了默认的save
方法,就是在这里,
我们把当前用户写入了当前的事例,成功的实现了目的.
接着就是templates
了,
因为我们通过template_name_suffix
重新定义了其后缀,
所以我们的templates
如下,其名字为topic_create_form.html
最后是urls.py
当然,这一切看上去比较简单,但是实际上从头开始操作还是有比较多的问题,
我也是整理了一个思维导图才搞懂这些View
,model
和form
之间的调用关系,
下面是这个思维导图的一个图片版本:
blog comments powered by