什么是@property在Django?
这是我的理解:@property是一个类中方法的装饰器,用于获取方法中的值。
但是,据我所知,我可以像平常一样调用该方法,它就会得到它。所以我不确定它到底是做什么的。
文档中的示例:
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
birth_date = models.DateField()
def baby_boomer_status(self):
"Returns the person's baby-boomer status."
import datetime
if self.birth_date < datetime.date(1945, 8, 1):
return "Pre-boomer"
elif self.birth_date < datetime.date(1965, 1, 1):
return "Baby boomer"
else:
return "Post-boomer"
@property
def full_name(self):
"Returns the person's full name."
return '%s %s' % (self.first_name, self.last_name)
Run Code Online (Sandbox Code Playgroud)
如果存在与不存在有什么区别?
如何访问 store.js 文件中的路由?
我想要访问store.jspath并fullPath在其中。
在 Django DRF 中,我可以将以下方法添加到序列化器中:
def create(self, validated_data):
user = User(
email=validated_data['email'],
username=validated_data['username']
)
user.set_password(validated_data['password'])
user.save()
return user
Run Code Online (Sandbox Code Playgroud)
在发现这一点之前,我认为您通常通过重写 View/ViewSet 方法在视图中执行此操作。
我原以为序列化器所做的只是转换数据并将其发送出去或从外部调用接收它。
有人可以向我解释一下在视图上执行此操作与在序列化器上执行此操作之间的区别吗?
更广泛地说,在序列化器上调用方法而不是在其他地方调用方法有什么好处?
axios 获取请求后,Vue.js 中的 HTML 未更新。HTML是:
<span @click="tryResponse">
Data_object: {{ data_object }} <br>
Data_object.serial: {{ data_object.serial }} <br>
</span>
Run Code Online (Sandbox Code Playgroud)
数据:
data(){
return{
data_object: {},
}
},
Run Code Online (Sandbox Code Playgroud)
方法:
methods: {
tryResponse() {
axios.get('http://127.0.0.1:8000/source/groups/15').then((response) => {
this.data_object.serial = response.data});
}
Run Code Online (Sandbox Code Playgroud)
这一切都发生在一个名为 App.vue 的文件中(如果这很重要)。
如果我查看 chrome 开发工具 Vue,我可以看到数据对象确实更新并填充了正确的信息。但它不会在页面上的 html 中更新。
编辑:如果我这样做,一切正常:
this.data_object = response.data
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时问题就来了:
this.data_object.serial = response.data
Run Code Online (Sandbox Code Playgroud)