我可以在以下方面使用帮助来理解和纠正错误:
JavaScript在页面上的某些事件期间调用以下函数:
function load_homePage() {
// Pull all posts
fetch('/homepage')
.then(response => response.json())
.then(posts => {
// Print all posts
posts.forEach( function(post) {
console.log(post)
})
})
}
最终,我将让JS创建动态Div,以显示来自调用的所有数据。
提取正在调用以下视图:
@csrf_exempt
@login_required
def view_homePage(request):
posts = Post.objects.all()
# Return entire set of posts to webpage
return JsonResponse([post.serialize() for post in posts],
safe=False)
对于Django,我想要的只是查询数据库,从Post模型中提取所有数据,然后将其发送回页面。模型如下:
from django.contrib.auth.models import AbstractUser
from django.db import models
class User(AbstractUser):
pass
class Post(models.Model):
posterID = models.ForeignKey("User", on_delete=models.CASCADE,
related_name="post")
content = models.TextField(blank=False)
timestamp = models.DateTimeField(auto_now_add=True)
def serialize(self):
return {
"id": self.id,
"posterID": self.posterID,
"content": self.content,
"timestamp": self.timestamp
}
Url.py文件也已完成:
urlpatterns = [
path("", views.index, name="index"),
path("login", views.login_view, name="login"),
path("logout", views.logout_view, name="logout"),
path("register", views.register, name="register"),
path("post", views.new_post, name="posts"),
path("homepage", views.view_homePage, name="homepage")
]
当我尝试触发事件时,出现以下错误:
TypeError: Object of type User is not JSON serializable
[23/Sep/2020 02:51:09] "GET /homepage HTTP/1.1" 500 107660
有人可以告诉我我做错了什么以及如何正确做吗?谢谢您的时间。
答案 0 :(得分:0)
我想出了答案,并认为如果对任何人都有价值,我会在这里发布。问题出在模型代码中。具体在这里:
def serialize(self):
return {
"id": self.id,
--->"posterID": self.posterID,<----
"content": self.content,
"timestamp": self.timestamp
}
作为用户的外键,它返回: “ posterID”:用户:someName
我通过将违规行更改为:
"posterID": self.posterID.id,