Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Django作者表单未保存到数据库_Python 3.x_Django - Fatal编程技术网

Python 3.x Django作者表单未保存到数据库

Python 3.x Django作者表单未保存到数据库,python-3.x,django,Python 3.x,Django,models.py 类博客(models.Model): title=models.CharField(最大长度=100,唯一性=True) slug=models.CharField(最大长度=100,唯一性=True) post_pic=models.ImageField(上传到='media/post_pics/',默认为无) body=models.TextField() posted=models.DateTimeField(db\u index=True,auto\u now\u a

models.py

类博客(models.Model):
title=models.CharField(最大长度=100,唯一性=True)
slug=models.CharField(最大长度=100,唯一性=True)
post_pic=models.ImageField(上传到='media/post_pics/',默认为无)
body=models.TextField()
posted=models.DateTimeField(db\u index=True,auto\u now\u add=True)
#作者=必须登录,从登录详细信息填充
forms.py

class postForm(forms.Form):
title=forms.CharField(最大长度=100)
slug=forms.CharField(最大长度=100)
post_pic=forms.ImageField()
body=forms.CharField(widget=SummernoteWidget())
views.py

def写入详细信息(请求):
模板名称='blog/write.html'
如果request.method==“POST”:
post\u form=postForm(request.post)
如果post\u表单有效():
新帖子=博客(title=标题,slug=slug,post\u pic=post\u pic,body=body)
新建_post.save()
返回HttpResponseRedirect(blog.get_absolute_url())
其他:
post_form=postForm()
返回呈现(请求、模板名称、{'post\u form':post\u form})
write.html


{%extends'blog/base.html%}
{%load static%}
{%block-back-img%}{%static'blog/assets/img/intro.jpg%}{%endblock-back-img%}
{%block titdes%}写入{%endblock titdes%}
{%block title%}写入{%endblock title%}
{%block pagedes%}django支持的社区博客{%endblock pagedes%}
{%block body%}
{{post_form.as_p}}
{%csrf_令牌%}
发表
{%endblock%}
我已经设置了这个表单,这样作者就可以在不访问管理面板的情况下在博客上写文章,我相信它应该可以工作,但它不会保存到数据库中

我一次又一次地试图研究这些观点,但不知道还能做些什么。请不要删除我的问题,只要问任何可以帮助我的问题。

在您的表单中。py

试一试


顺便说一句,我是Django的新手,希望这对您有所帮助。

看起来您只需要保存表单,但您正在创建一个新的
Blog
对象,其值在任何地方都无法定义

new\u post=Blog(title=title,slug=slug,post\u pic=post\u pic,body=body)

title
slug
等未定义

您应该做的是将其更改为
ModelForm
,以便django完成所有的艰苦工作

class postForm(forms.ModelForm):
类元:
模型=博客
字段=('title','slug','post_pic','body')
小部件={
“正文”:SummernoteWidget(),
}
那么在你看来,你只需要做

def写入详细信息(请求):
模板名称='blog/write.html'
如果request.method==“POST”:
post\u form=postForm(request.post)
如果post\u表单有效():
post_form.save()
返回HttpResponseRedirect(blog.get_absolute_url())
其他:
#获取请求
post_form=postForm()
返回呈现(请求、模板名称、{'post\u form':post\u form})
表单(和模型表单)的summernote文档是

不要忘记,当使用媒体附带的小部件时,您需要将表单的媒体添加到模板中

您可以在HTML中使用
{{form.media}}
获取所有CSS和JS,或者单独作为
{{form.media.JS}
{form.media.CSS}

你可以在summernote应用程序中看到他们是如何做到这一点的

类postForm(forms.ModelForm):
类元:
模型=博客
字段=('title','slug','post_pic','body')
小部件={
“正文”:SummernoteWidget(),
}
对不起,伙计们,你们可以把django summer便笺和模型表格一起使用。我以前用过它,但是编辑器没有出现,所以我把它改成了我之前发布的版本,但是在阅读了关于堆栈溢出的另一个答案之后。我发现我没有将下面的代码添加到我的HTML文件中,或者只是添加到我的base.HTML中



为什么不使用模型表单?您的用例正是它们的用途。另外,对于您的
posted
字段,最好只使用
posted=models.DateTimeField(默认值=timezone.now)
我不使用模型表单的原因是我使用的是Django summer注意:所见即所得编辑器,这样我就不能同时使用模型表单和编辑器了。@adstefnum这不是真的。您可以将这样的文本编辑器与
ModelForm
一起使用。在他们的文件里。我会更新我的答案谢谢。我只是在别的地方发现了,在发布我的邮件之前没有重新检查你的代码answer@adstefnum你不应该像你建议的那样包含JS/CSS。您应该从小部件本身获取这些信息。我在回答中增加了一个例子。
from .models import Blog

class postForm(forms.Form):
   title = forms.CharField(max_length=100)
   slug = forms.CharField(max_length=100)
   post_pic = forms.ImageField()
   body = forms.CharField(widget=SummernoteWidget())



   class Meta:
        model = Blog
        fields = ('title', 'slug', 'post_pic', 'body')