Maison  >  Questions et réponses  >  le corps du texte

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

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中文网2741 Il y a quelques jours482

répondre à tous(1)je répondrai

  • PHP中文网

    PHP中文网2017-04-18 10:35:54

    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.

    répondre
    0
  • Annulerrépondre