具有正常Django形式和引导的Djangocketditor

2024-04-25 23:58:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Django和CKEditor的新手,从过去的一周开始,我一直在努力整合Django-CKEditor的表单。它在Django管理表单中工作得非常好,但是在普通表单中却不工作。在

这是我的表单.py在

class ArticleForm(forms.ModelForm):
    content = forms.CharField(widget = CKEditorWidget())    

    class Meta:
        model = Article
        fields = ['title','content','meta_description','meta_tags']

在模型.py在

^{pr2}$

观点

def new_post(request):
    if request.method == 'POST':
        form = ArticleForm(request.POST)
        if form.is_valid():
            article = form.save(commit=False)
            article.url =  form.data['title']
            article.save()
            return HttpResponse('/thanks/')
    else:
        form = ArticleForm()
    return render(request, 'blog/new-post.html', {'form': form})

为了验证它是否可以在管理中工作,我已经测试了与管理添加到管理表单。在

在管理员py在

class ArticleAdminForm(forms.ModelForm):
    content = forms.CharField(widget=CKEditorWidget())

    class Meta:
        model = Article

class ArticleAdmin(admin.ModelAdmin):
    form = ArticleAdminForm


admin.site.register(Article, ArticleAdmin)

还有一件事我正在使用bootstrap3。我的模板看起来像

<form class="form-horizontal" action="/blog/new-post/" method="post" >{% csrf_token %}
            <fieldset>
              <legend>New Blog Post</legend>
                {{ form.non_field_errors }}
                <div class="fieldWrapper form-group">
                    {{ form.title.errors }}
                    <label class="col-lg-2 control-label" for="id_title">Title</label>
                    <div class="controls col-lg-10 ">
                      <input type="text" class="col-lg-10 form-control" name="title" id="id_title}}" placeholder="Title">
                    </div>
                </div>
                <div class="fieldWrapper form-group">
                    {{ form.content.errors }}
                    <label class="col-lg-2 control-label" for="id_content">Content</label>
                    <div class="controls col-lg-10 ">
                      <textarea class="col-lg-10 form-control" rows="17"name="content" id="id_content}}" placeholder="Content"></textarea>
                    </div>
                </div>
                <div class="fieldWrapper form-group">
                    {{ form.meta_description.errors }}
                    <label class="col-lg-2 control-label" for="id_meta_description">Description</label>
                    <div class="controls col-lg-10 ">
                      <textarea class="col-lg-10 form-control" rows="5"name="meta_description" id="id_meta_description}}" placeholder="Short description about this article."></textarea>
                    </div>
                </div>
                <div class="fieldWrapper form-group">
                    {{ form.meta_tags.errors }}
                    <label class="col-lg-2 control-label" for="id_meta_tags">Tags</label>
                    <div class="controls col-lg-10 ">
                      <input type="text" class="col-lg-10 form-control" name="meta_tags" id="id_meta_tags}}" placeholder="Comma separated tags eg. trekking, hiking ">
                    </div>
                </div>

              <input type="submit" value="Publish"  class="btn btn-default btn-large pull-right">
            </fieldset>
          </form>

任何帮助都会很好。提前谢谢


Tags: divformid表单titletagscoldescription
3条回答

尝试在模板底部添加此脚本

<script>
    $(function () {
        CKEDITOR.replace('id_content', {
            toolbar: 'Basic'
        });
    });
</script>

当您从管理界面使用coeditor时(我猜是通过suit-ckeditor),您可以隐式地将此呈现函数用于文本区域小部件:

^{2}$

基本上做同样的工作。在

我也经历过同样的问题。 我宁愿使用django-tinymce作为我的常规表单,使用ckeditor作为管理页面。在

这是我的表单.py文件:

from tinymce.widgets import TinyMCE
from django import forms
from .models import Article
class ArticleForm(forms.ModelForm):
    content = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30}))
    class Meta:
        model = Article
        fields = ('content',)

希望这有帮助。在

我想你错过了中的from ckeditor.fields import RichTextField行模型.py

更改content = models.TextField()

进入content = RichTextField(blank=True, null=True)

相关问题 更多 >

    热门问题