【发布时间】:2014-02-25 19:32:28
【问题描述】:
我有一个简单的表单,其中包含用户名和消息。单击提交按钮后,我希望将用户和消息的数据分别存储到数据库中。但是,我无法弄清楚我应该在我的“index.html”模板中的哪个位置包含“用户”和“消息”。现在我在 m.save() 上收到 IntegrityError。
"Exception Value: SimpleMessage_message.content may not be NULL"
型号
class User (models.Model):
name = models.CharField(max_length=20)
def __unicode__(self):
return self.name
class Message (models.Model):
content = models.TextField(max_length=140)
user = models.ForeignKey(User)
time = models.DateTimeField()
def __unicode__(self):
return self.content
views.py
def index (request):
if request.method == 'POST':
u = User(name=request.POST.get('user'))
m = Message(content=request.POST.get('text'), user = u)
u.save()
m.save()
return render_to_response('index.html', {
'user': u,
'message': m,
}, RequestContext(request))
else:
u = User()
m = Message()
return render_to_response('index.html', {
'user': u,
'message': m,
}, RequestContext(request)
)
index.html
<form action="{% url 'index' %}" method = "post">
{% csrf_token %}
<input type="text" name="user" id="user" maxlength="20" placeholder = "Username">
<br>
<br>
<textarea rows="4" cols="35" name="text" maxlength="140" placeholder = "Message goes here"></textarea><br>
<input type="submit" value="Submit">
</form>
【问题讨论】:
-
查看生成的 HTML 时,是否看到了 CSRF 令牌。
-
CSRF 令牌会是什么样子?我看到了用户名和消息的两个文本框,以及提交按钮。
-
这将是一个类似
<input type="hidden" value="123">的标签。 -
不,我没有看到
-
您是否没有注意到错误消息为您提供了有关如何解决问题的详细说明?