Django
代码views.py:
from django.shortcuts import render
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from home.models import Post
@csrf_exempt
def home(request):
context = {'request_method': request.method}
if request.method == 'POST':
context['request_payload'] = request.POST.dict()
post_data = dict(request.POST)
print(post_data)
for key, value in post_data.items():
for subvalue in value:
print(key, subvalue)
if key == 'name':
m = Post.name(subvalue)
m.save()
if key == 'description':
print(subvalue)
p = Post.description(subvalue)
p.save()
if request.method == 'GET':
context['request_payload'] = request.GET.dict()
return HttpResponse()
代码models.py
from django.db import models
class Post(models.Model):
name = models.CharField(max_length=150)
description = models.CharField(max_length=150)
print(post_data)
中的结果为{'name': ['luca', 'jeams'], 'description': ['all', 'all2']}.
print(key, value)
中的结果提取值为:
name Luca
name jeams
description all
description all2
我想将此数据保存在数据库中,但是不起作用。我该怎么办?
答案 0 :(得分:1)
首先查看doc。使用getlist
获取具有相同名称的值的列表。然后遍历它们并将数据保存在表中。
from django.shortcuts import render
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from home.models import Post
@csrf_exempt
def home(request):
context = {'request_method': request.method}
if request.method == 'POST':
context['request_payload'] = request.POST.dict()
names = request.POST.getlist('name')
descriptions = request.POST.getlist('description')
for i in range(len(names)):
post = Post.objects.create(name=names[i], description=descriptions[i])
if request.method == 'GET':
context['request_payload'] = request.GET.dict()
return render(request, 'your_template_name_here', context)
答案 1 :(得分:0)
将代码替换为post方法,如下所示:
if request.method == 'POST':
for ind, obj in enumerate(request.POST.getlist('name')):
desc = request.POST.getlist('description')[ind]
Post.object.create(name=obj, description=desc)
它将为您工作