如何定制Django';你的意见表?

如何定制Django';你的意见表?,django,django-forms,django-comments,Django,Django Forms,Django Comments,我正在尝试定制Django的评论表单。在django.contrib.comments.forms中,我注意到所有字段表单都在类CommentDetailForm中声明,该类继承自CommentSecurityForm。然后我认为,当我编写模板标记{%get\u comment\u form for order as form%}时,它得到了名为CommentForm的类,该类继承了带有蜜罐字段的CommentDetailForm 我想定制评论表单,以便它只显示评论字段(而不是可选的名称、电子邮

我正在尝试定制Django的评论表单。在
django.contrib.comments.forms
中,我注意到所有字段表单都在类
CommentDetailForm
中声明,该类继承自
CommentSecurityForm
。然后我认为,当我编写模板标记
{%get\u comment\u form for order as form%}
时,它得到了名为
CommentForm
的类,该类继承了带有蜜罐字段的
CommentDetailForm

我想定制评论表单,以便它只显示评论字段(而不是可选的名称、电子邮件或URL字段)。这些信息将由当前登录的用户提供。事实上,只有具有特定
UserProfile的登录用户才允许发表评论。user_type
UserProfile
具有
user
的外键)

关于如何做到这一点,有什么建议吗?看着Django评论的源代码已经吓到我了,哈哈

编辑:

以下是注释模板到目前为止的外观:

{% get_comment_form for order as form %}
    <form action = "{% comment_form_target %}" method = "post">
        {% csrf_token %}
        {{ form }}
        <input type = "submit" name = "submit" value = "Post">
    </form>
{%get_comment_form for order as form%}
{%csrf_令牌%}
{{form}}
这个网站看起来像这样


我想隐藏
名称
电子邮件地址
,以及
URL
,您应该能够在模板中完成所有这些操作:

{% ifequal User.profile.user_type "comment_type" %}
{% get_comment_form for order as form %}
  <form action="{% comment_form_target %}" method="post">
    {% csrf_token %}
    {% for field in form %}
    {% ifequal field.name "name" %}
        <input id="id_name" type="hidden" name="name" value="{{ user.username }}" />
    {% else %}{% ifequal field.name "email" %}
        <input type="hidden" name="email" value="{{ user.email }}" id="id_email" />
    {% else %}{{ field }}{% endifequal %}{% endifequal %}
    {% endfor %}    
        <input type="submit" name="submit" value="Post">
  </form>
{% endifequal %}
{%ifequal User.profile.User\u type“comment\u type”%}
{%get_comment_form for order as form%}
{%csrf_令牌%}
{%形式的字段为%}
{%ifequal field.name“name”%%
{%else%}{%ifequal field.name“email”%}
{%else%}{{field}{%endifequal%}{%endifequal%}{%endifequal%}
{%endfor%}
{%endifequal%}

UserProfile
User
没有一对一的关系?此外,如果您不担心安全性,最简单的方法就是将字段“隐藏”在模板中,并填写用户等。即使我这样做,
{%render\u comment\u form for order%}
有没有办法隐藏它,除非
用户。配置文件
有特定的
用户类型
?哦,你说得对。好的,隐藏其他字段怎么样?在模板中“隐藏”字段是什么意思?我将更新我的问题以向您展示我现在所做的事情。我认为我不需要为
name
email
添加值。它们都是可选的。事实上,Django comments会自动执行此操作(可能在
models.py
中的某个地方)。我如何只显示
comments
字段(但仍然具有隐藏蜜罐字段和内置安全性的优势)?如果您根本不想拥有字段,只需执行
{%ifequal field.name“name”%}{%else%}在此处处理其他字段{%endifequal%}
。只需将
ifequal
的主体留空即可。我不确定我可以在答案中包含的内容中添加什么内容——它允许您按照自己的意愿控制表单。不过,我还是通过查看
Django.contrib.comments
下Django注释框架中的模板
form.html
找到了答案。谢谢r所有您的帮助!我正在使用Django v1.4,但在Django官方教程中有一个类似的例子。基本上,您可以在
settings.py
中设置
TEMPLATE\u DIR
(我使用了
os.path.join(os.path.dirname(\uu文件名),“…”,“templates”).replace(“\\”,“/”),
),然后在您的
模板
文件夹中,为要覆盖其模板的应用程序创建另一个文件夹,然后在该文件夹中添加与要覆盖的模板同名的模板(
form.html
)。所以我的看起来像
mysite/templates/comments/form.html
。我希望这会有所帮助!记住在Django v1.4中,我的设置在
mysite/mysite/settings.py
中。这就是为什么上面的
os.path.dirname()
中有一个