python - 小白django提交数据后,没有存储到数据库(查阅资料并没有发现问题)
PHP中文网
PHP中文网 2017-04-18 10:33:54
0
1
480

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>
PHP中文网
PHP中文网

认证0级讲师

reply all(1)
Ty80

Troubleshoot step by step, 1. Whether the form submits data to the server, 2. Print the sql statement on the server and execute it directly in the database to see if there are any errors.

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!