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>
Dépannez étape par étape, 1. Si le formulaire soumet des données au serveur, 2. Imprimez l'instruction SQL à partir du serveur et exécutez-la directement dans la base de données pour voir s'il y a des erreurs.