python - 字段 'id' 需要一个数字,但得到了 ' '
问题描述
我正在尝试获取我的项目的 ID,以便我可以将其保存在用户的个人资料中。但是,当我发出发布请求时,我收到错误:字段 'id' 需要一个数字,但得到了 ''。
那么我该如何解决这个问题,以便我可以获得项目的 ID,为什么它在我的代码中不起作用?
这是该页面的视图:
def search(request):
animes = []
if request.method=='POST' and 'search' in request.POST :
animes_url = 'https://api.jikan.moe/v3/search/anime?q={}&limit=6&page=1'
search_params = {
'animes' : 'title',
'q' : request.POST['search']
}
r = requests.get(animes_url, params=search_params)
results = r.json()
results = results['results']
if len(results):
for result in results:
animes_data = {
'Id' : result["mal_id"],
'Title' : result["title"],
'Episodes' : result["episodes"],
'Image' : result["image_url"]
}
animes.append(animes_data)
else:
message = print("No results found")
for item in animes:
id = item.get("Id")
title = item.get("Title")
episodes = item.get("Episodes")
image = item.get("Image")
anime_in_database = Anime.objects.filter(title=title).exists()
if not anime_in_database:
anime = Anime.objects.create(mal_id=id, title=title, episodes=episodes, image=image)
anime.save()
context = {
'animes' : animes
}
return render(request,'search.html', context)
elif request.method=='POST' and 'anime_pk' in request.POST :
anime_id = request.POST.get("anime_pk")
anime = Anime.objects.get(id = anime_id)
request.user.profile.animes.add(anime)
messages.success(request,(f'{anime} added to wishlist.'))
return redirect ('/search')
animes = Anime.objects.all()
return render(request,'search.html')
带有项目的 html 部分:
<form method="post">
{% csrf_token %}
<section>
<div class=row>
<div class="col-md-4 col-sm-6 col-lg-3">
<div class="card">
<div class="card-body text-center">
<p class="card-title"> <b>{{anime.Title}}</b></p>
<hr>
<p class="card-text">Episodes: <b>{{anime.Episodes}}</b></p>
<img src = {{anime.Image}} />
</div>
</div>
</section>
<input type="hidden" value="{{anime.pk}}" name="anime_pk">
<button type="submit" class="btn btn-outline-primary" style="font-size:18px; border-radius: 50%">★</button>
</form>
我的应用程序中的网址:
app_name = 'core'
urlpatterns = [
path("", views.homepage, name="homepage"),
path("login", views.login_request, name="login"),
path("register", views.register_request, name="register"),
path("logout", views.logout_request, name= "logout"),
path("profile", views.profile, name="profile"),
path("search", views.search, name="search")
]
解决方案
推荐阅读
- vba - 如何在 Access 中使用 VB 将所有记录插入到表中
- ios - 如何在 Tableview 中使用集合视图显示内容
- ios - UIButton 的属性标题的动态类型
- react-native - 在 iOS 中反应原生版本不匹配
- javascript - 带有js库的android webview中的Javascript
- debugging - 带有多条调试黄线的 Visual Studio 2019
- javascript - 下拉选择选项 selenium webdriverjs
- php - 无法获取下拉框以自动填充 AJAX PHP
- javascript - 当我的页面加载速度很快时,如何测试我的加载屏幕?
- angular - Angular 环境默认始终为 stage