【问题标题】:Styling a generic.edit.CreateView Form in Django Using Bootstrap使用 Bootstrap 在 Django 中设计 generic.edit.CreateView 表单
【发布时间】:2017-05-02 03:46:30
【问题描述】:

我的 Django 应用中有以下视图:

class TodoCreateView(generic.edit.CreateView):
    model = Todo
    fields = ['todo_name','todo_description']
    template_name = 'list/todo-create.html'
    success_url = reverse_lazy('list:index')
    def form_valid(self, form):
        form.instance.owner = self.request.user
        form.instance.created_date = datetime.now()
        return super(EntryCreateView, self).form_valid(form)

此视图对应以下模板:

{% extends 'list/base.html' %}

{# Load the tag library #}
{% load bootstrap3 %}

{# Load CSS and JavaScript #}
{% bootstrap_css %}


{# Display django.contrib.messages as Bootstrap alerts #}
{% bootstrap_messages %}

{% block content %}

<h1>Todo:</h1>
<div>
<form action="" method="post">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Save" />
</form>

{% endblock %}

显然,Django 会根据 View 中指示的字段来组合和输出表单。但是,似乎没有机会使用 CSS 设置表单字段的样式。我怎样才能做到这一点?

【问题讨论】:

    标签: python css django twitter-bootstrap


    【解决方案1】:

    您需要提供视图的get_form_class 函数并将其设置为具有提供引导样式的基类的modelform_factory - 请参阅Applying bootstrap styles to django forms 以获取此简单示例。

    class TodoCreateView(generic.edit.CreateView):
         def get_form_class(self):
              return modelform_factory(self.model, form=MyBaseForm, fields=self.fields)
    

    否则,自己创建一个表单然后将其设置为form_class 会更容易

    class TodoForm(MyBaseForm):
        pass
    
    form_class = TodoForm
    

    【讨论】:

    • 是否可以设置我创建的 Django 表单的样式?
    • @MadPhysicist - 查看链接的问题
    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 2016-04-16
    • 2018-02-18
    • 2012-10-07
    相关资源
    最近更新 更多