views.py
#提交评论
def comment_post(request):
try:
if request.method == 'POST':
comment_form = CommentForm(request.POST)
print(comment_form)
print(comment_form.is_valid())
if comment_form.is_vaild():#验证表单
#获取表单信息
comment = Comment.objects.create(username=comment_form.cleaned_data["author"],
email=comment_form.cleaned_data["email"],
url=comment_form.cleaned_data["url"],
content=comment_form.cleaned_data["comment"],
article_id=comment_form.cleaned_data["article"],
user=request.user if request.user.is_authenticated() else None)
print('comment:',comment)
comment.save()
else:
return render(request,'failure.html',{'reason':comment_form.errors})
except Exception as e:
logger.error(e)
return redirect(request.META['HTTP_REFERER'])#HTTP_REFERE是header的一部分,浏览器向服务器发送请求的时候,告诉服务器我是从哪里过来的
urls.py
from django.conf.urls import url
from blog_project.views import *
urlpatterns = [
url(r'^$',index,name='index'),
url(r'^archive/$',archive,name='archive'),
url(r'^article/$',article,name='article'),
url(r'^comment/post/$',comment_post,name='comment_post'),
url(r'^logout$',do_logout,name="logout"),
url(r'^reg',do_reg,name='reg'),
url(r'^login',do_login,name='login'),
url(r'^category/$',category,name='category')
]
forms.py
class CommentForm(forms.Form):
'''
评论表单
'''
author = forms.CharField(widget=forms.TextInput(attrs={"id":"author","class":"comment_input",
"required":"required","size":"25","tabindex":"1"}),
max_length=50,error_messages={"required":"username不能为空",})
email = forms.EmailField(widget=forms.TextInput(attrs={"id":"email","type":"email","class":"comment_input","required":"required","size":"25","tabindex":"2"}),
max_length=50,error_messages={"required":"email不能为空",})
url = forms.URLField(widget=forms.TextInput(attrs={"id":"url","type":"url","class":"comment_input","size":"25","tabindex":"3"}),
max_length=100,required=False)
comment = forms.CharField(widget=forms.Textarea(attrs={"id":"comment","class":"message_input",
"required":"required","cols":"25",
"rows":"5","tabindex":"4"}),
error_messages={"required":"评论不能为空",})
article = forms.CharField(widget=forms.HiddenInput())
article.html
<form action="{% url 'comment_post' %}" method="post">
{% csrf_token %}
<p>{{comment_form.author}}
<label for="author">Name<span style="color:red;">*</span></label>
</p>
<p>{{comment_form.email}}
<label for="email">Email(Will NOT be published)<span style="color:red;">*</span></label>
</p>
<p>{{comment_form.url}}
<label for="url">URL</label>
</p>
<p>
{{comment_form.comment}}
</p>
<p>
{{comment_form.article}}
<input name="submit" type="submit" id="submit" tabindex="5" value="确认" class="button" />
</p>
</form>
Selesaikan masalah langkah demi langkah, 1. Sama ada borang menyerahkan data ke pelayan, 2. Cetak pernyataan sql daripada pelayan dan laksanakannya terus dalam pangkalan data untuk melihat jika terdapat sebarang ralat.