首页 > 开发 > Python > 正文

小白django提交数据后,没有存储到数据库(查阅资料并没有发现问题)

2017-09-06 19:16:48  来源:网友分享

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 urlfrom 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>

解决方案

一步一步排查,1表单是否提交数据到服务端,2把服务端的sql语句打印出来直接在数据库里面执行看看是否有错误。