Django中的新功能,我在向表单添加表单数据时遇到了问题。我无法读取表单值并添加到模型中。我想将用户添加到具有名称和一个主题的模型中。
#models.py
from django.db import models
class User(models.Model):
name = models.CharField(max_length=80)
subject = models.CharField(max_length=120)
#views.py
from django.shortcuts import render,render_to_response
from models import User
from django.http import HttpResponseRedirect
def add_user(request):
if request.method == 'POST':
f = User(request.POST)
if f.is_valid():
name = f.cleaned_data['name']
subject = f.cleaned_data['subject']
f.save()
return HttpResponseRedirect('index.html')
else:
f = User()
return render_to_response('index.html')
return render(request, 'index.html')
#index.html
<!DOCTYPE html>
<html>
<head>
<title>Sistemas Web</title>
</head>
<body>
<div>
<h1>Add User</h1>
<form action="add_user" method="POST">{% csrf_token %}
<label>Name</label><br>
<input id="name" type="text"><br>
<input type="radio" id="subject">A<br>
<input type="radio" id="subject">B<br>
<input type="submit" value="Enviar">
</form>
</div>
</body>
</html>
任何帮助将不胜感激。
答案 0 :(得分:2)
你根本没有任何表格。请阅读model forms上的文档并按照说明进行操作。
答案 1 :(得分:1)
您必须使用request.POST.get()
获取网址发送的属性,然后发送到
f = User(request.POST)
模型的属性,如u = User(name=name, subject=subject)
#views.py
def add_user(request):
if request.method == 'POST':
name = request.POST.get('name', '')
subject = request.POST.get('subject', '')
u = User(name=name, subject=subject)
u.save()
return render(request, 'index.html')
return render(request, 'index.html')
在模板上,您缺少输入标记的名称,没有任何内容发送。
#index.html
<!DOCTYPE html>
<html>
<head>
<title>Sistemas Web</title>
</head>
<body>
<div>
<h1>Add User</h1>
<form action="add_user" method="POST">{% csrf_token %}
<label>Name</label><br>
<input name="name" type="text"><br>
<input type="radio" name="subject" value="A">A<br>
<input type="radio" name="subject" value="B">B<br>
<input type="submit" value="Enviar">
</form>
</div>
</body>
</html>
希望有所帮助