Django表单的简单使用


2020年4月2日 22:40 阅读 488 评论 0 None

今天简单说说Django中form表单的的使用

这两天一直被一件事给烦到茶饭不思,就是我博客的评论功能现在只实现了别人评论我的博客,我还不能回复评论更别说用户评论用户的评论了,虽然我的博客也没几个人来看,但是有句话说得好,麻雀虽小,五脏俱全。不管有没有人看,这个功能还是得实现了的,所以今天研究了下Django自带的form表单。

创建表单

在app根目录下新建一个form.py,在里面写入

from django import forms 

class CommentForm(forms.Form): 
    content_type = forms.CharField() 
    object_id = forms.IntegerField() 
    comment_content = forms.CharField(widget=forms.Textarea) 
  • 代码解释

自定义表单类并继承forms. Form forms. CharField 代表html中的input标签 forms. CharField(widget=forms. Textarea) 代表html中textarea标签

有个问题来了,我们有时候想需要将一些数据放在隐藏input标签里,这时候应该怎么办呢?

我们只需加入以下参数即可

content_type = forms.CharField(widget=forms.HiddenInput) 

我们还需要在view.py的视图函数中将这个表单初始化并传递给模板(前端)

from comment.forms import CommentForm 
def ... 
    data = { 
        'content_type':'article', 
        'object_id':'29' 
    } 
# initial 可以在表单初始化时传递数据进去,是一个字典 
context = {'article': article,'comment_form':CommentForm(initial=data)} 

在前端中我们这样做

 <div class="card-body p-2 p-md-3 bg-white mt-3 f-13"> 
     <form action="{% url 'comment_submit' %}" method="post"> 
         {% for field in comment_form %} 
         {{ field }} 
         {% endfor %} 
         {% csrf_token %} 
         <input type="submit" class="btn btn-primary"> 
     </form> 
 </div> 

这样表单就可以正确的显示出来,如下图: form表单

可以看到两个input框里就是我们在views.py中初始化时传进去的value

当然我们肯定是要用ajax来提交评论的,所以我们在form标签内写入

onsubmit="return false;" 

再给提交按钮一个id,比如id为submit

这样我们就可以在js中写入:

$("#submit").click(function(){ 
  $.post({ 
    ... 
  }) 
}) 

但是别忘了,在使用post方法时必须同时提交csrf_token,否则后端会403错误

最后修改于2020年4月2日 22:40
©允许规范转载

版权声明:如无特殊说明,文章均为本站原创,转载请注明出处

本文链接:https://www.yyqblog.com/article/18.html

微信
支付宝
登录后即可进行评论/回复