【问题标题】:putting a class view in a template django在模板django中放置一个类视图
【发布时间】:2016-06-26 05:58:24
【问题描述】:

django 新手。我只是想将我的班级视图包含在模板中。我拥有的类视图是一个 CreateView,所以我想生成一个可以提交的表单。我在网上看到各种用于生成对象列表等的信息,但没有任何形式的信息。我想这不应该那么难。我有以下内容:

models.py

class Comments(models.Model):
    comment_text = models.CharField(max_length=600, default="None")

views.py

class CommentCreate(CreateView):
    model = Comments
    fields = ['comment_text']
    template_name = 'commentcreate.html'
    context_object_name = 'comment_create'

我的模板

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post">{% csrf_token %}
    {{ comment_create }}
    <input type="submit" value="Create" />
</form>
</body>
</html>

模板是模拟的,我真的想将此表单添加到一个完全不同的模板中,该模板是另一个应用程序的一部分。如果有人能指出我正确的方向,将不胜感激。

【问题讨论】:

  • 使用{{ form }} 而不是{{ comment_create }}{{ form.comment_text }}
  • 好的,但是它怎么知道它指向的是哪个表单。如果我有几个 CreateView 类,如果我只是说 {form},我看不出 if 指向这个特定视图 CommentCreate 的位置。我尝试将其包含在另一个模板中,但表单不显示,我假设是因为没有链接告诉它要显示哪个视图。

标签: python django django-class-based-views


【解决方案1】:

只需使用 {{ form }} 访问您的 view 类中定义的所有字段。

要访问表单中的特定字段,请使用点运算符,即{{ form.db_field_name }}

例如,

{{ form.comment_text }}

这将为字段comment_text创建一个labelinput标签。

您也可以render表格或段落等形式。

【讨论】:

  • 好的,但是它怎么知道它指向哪个表单。如果我有几个 CreateView 类,如果我只是说 {form},我看不出如果指向这个特定视图 CommentCreate
  • 它通过 url 连接。即,例如url(^post/create, views.CreateView.as_View(), name="create") 将调用相应的视图,该视图进一步调用给定的模板。访问模板中的数据库字段是通过{{ form }},因为您的视图类继承了 CreateView 类。
  • 好的,我明白这一点,而且我只用一个模板就能做到这一点。但是,如果我已经有一个模板和一个url(^post/create, views.CreateView.as_View(), name="create") 的 url,并且我想在同一个模板中添加另一个 CreateView 怎么办?我如何同时拥有它们?
  • 我在 url 中的 createView 的意思是与该 url 对应的 createViewclass,在本例中为 Views.CommentCreate.as_view()。我不知道您如何为两个 createViews 提供相同的 url。
  • 那么 createview 是否只适用于一种模型?我有两个模型,我想在同一个 url 中显示
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 2017-10-30
  • 2012-04-29
  • 1970-01-01
  • 2014-11-26
  • 2017-10-26
相关资源
最近更新 更多