Django:如何使用ModelForm和泛型视图

2024-04-26 00:13:11 发布

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

我正在学习Django。在

我对Model FormGeneric Views的用法有点困惑。在

虽然两者不同,但我所理解的是,两者都可以根据给定的model class生成{}

我有一个不同的表来存储想法,喜欢,评论和标签。在

我是应该使用model form还是generic views从用户那里获得想法、喜欢和评论。在

我还想定制我的表单的布局,那么有什么更好的方法呢?在

我想了解如何使用django的这些功能


Tags: django用户form表单用法model评论标签
1条回答
网友
1楼 · 发布于 2024-04-26 00:13:11

泛型视图和模型表单不是排他的概念;泛型视图是用来包含特定函数的业务逻辑的,而ModelForms则从模型的逻辑创建表单、验证/数据清理逻辑和CRUD功能。在

下面的例子(来自docs),UpdateView(作为Django的一部分提供的通用视图)从单个模型实例创建一个模型表单。通过CBV约定,要更新的实例的主键应该是url提供的第一个位置参数。在

在这种情况下,将自动生成一个ModelForm。当需要更细粒度的控制时,您可以定义自己的ModelForm并将其提供给CBV。希望这有助于澄清你的困惑。在

示例myapp/视图.py公司名称:

from django.views.generic.edit import UpdateView
from myapp.models import Author
from django import forms


class MyModelForm(forms.ModelForm):
    model = Author
    fields = ['name', 'city', ...]


class AuthorUpdate(UpdateView):
    model = Author
    form = MyModelForm
    template_name_suffix = '_update_form'

myapp/author_更新示例_表单.html公司名称:

^{pr2}$

示例myapp/网址.py在

from django.conf.urls import *
from myapp.views import AuthorUpdate

urlpatterns = patterns('',
    url('^update_author/(?P<pk>[\w-]+)$', AuthorUpdate.as_view(), name='update_author'),
)

相关问题 更多 >