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

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级讲师

membalas semua(1)
Ty80

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan