我主要是一个PHP人。我如何处理django中的表单?我设法创建了一个表单,模型和视图。现在我想将我的数据保存到数据库中。
#forms.py
from django import forms
import datetime
class CommentForm(forms.Form):
name = forms.CharField(initial='Your name')
comment = forms.CharField(initial='You comment')
commend_date = forms.DateField(initial=datetime.date.today);
posted_by = forms.CharField(max_length=200)
我的观点是这样的:
#views.py
from django.shortcuts import render_to_response
from django.http import Http404
from django.template import Template, Context
from mysite.blog.models import Blog #load a model
from mysite.blog.forms import CommentForm #load a form
def index(request):
try:
blog_posts = Blog.objects.all().order_by('-post_date')[:10]
if request.method == 'POST':
form = CommentForm(request.POST)
else:
form = CommentForm()
except Blog.DoesNotExist:
raise Http404
return render_to_response('blog/posts.html', locals())
然后我的模板( blog / posts.html )就像这样:
{% extends "base.html" %}
{% block title %}Dummy Django Site{% endblock %}
{% block heading %}A sample header{% endblock %}
{% block content %}
{% if blog_posts %}
{% for post in blog_posts %}
<b>{{post.title}}</b><br/>
<b>{{post.post_date}}</b><br/>
<b>{{post.posted_by}}</b><br/>
{{post.content}}
{% endfor %}
{% endif %}
<h2>A Sample Form</h2>
<form action="" method="POST">
{% for field in form %}
<div class="fieldWrapper">
{{ field.errors }}
{{ field.label_tag }}: {{ field }}
</div>
{% endfor %}
<p><input type="submit" value="Send message" /></p>
</form>
{% endblock %}
{% block footer %}
<hr/>
Great footer!
{% endblock %}
在PHP中,我会在控制器中添加一些内容,如:
//from <form action="http://mysite.com/saveComment" method="POST" >
function saveComment() {
$data['name'] = $_POST['name'];
$data['comment'] = $_POST['comment'];
$model->save($name);
}
我如何在Django中这样做?我在哪里放置代码?
非常感谢任何回复。
答案 0 :(得分:4)
如果您确实需要大量自定义内容,请查看ModelForms,但Generic Views足以应对大量用例。
P.S。如果你真的在做Comment
相关内容,请查看django.contrib.comments
中的provided Comments
app。
更新:不要像上面那样定义您的观看次数和表单,而是使用ModelForm
。这将允许使用如下代码进行保存:
# Save a new Comment object from the form's data.
>>> new_comment = my_comment_form.save()
对forms.py
的更改会将CommentForm
的定义更改为:
from django.forms import ModelForm
class CommentForm(ModelForm):
class Meta:
model = Comment # Assumes you've imported your model somewhere
更新2:一般情况下:
.save()
POST
数据,请使用您从cleaned_data
Form
POST
属性