我在临时主机上创建了一个夹层项目。我发现一个主题非常适合我的项目看起来不错。所以我将主题下载到我的项目并更改了settings.py中的主题名称。我还通过取消注释来使用夹层公共帐户应用程序。
以下是settings.py
中的代码INSTALLED_APPS = (
"flat",
"django.contrib.admin",
"django.contrib.auth",
...
"mezzanine.accounts",
...
)
这很有效。主页看起来不错。但是当我测试帐户注册时,遗憾的是它丢失了所有表单标签。我认为这是第一次出现静态文件问题,所以我修改了html类标签并将夹层最新的css文件更新到平板应用程序。经过多次尝试,在问题上花了很多时间,它没有改变任何东西。
的链接所以我开始关注我在模板{% fields_for form %}
accounts/account_form.html
{% extends "base.html" %}
{% load i18n mezzanine_tags %}
{% block meta_title %}{{ title }}{% endblock %}
{% block title %}{{ title }}{% endblock %}
{% block body_id %}account{% endblock %}
{% block breadcrumb_menu %}
{{ block.super }}
<li>{{ title }}</li>
{% endblock %}
{% block main %}
{% errors_for form %}
<form method="post"{% if form.is_multipart %}
enctype="multipart/form-data"{% endif %} role="form" class="center">
<fieldset class="registration-form">
{% fields_for form %}
<div class="form-group">
<button type="submit" class="btn btn-success btn-
md btn-block">{{ title }}</button>
{% block account_form_actions %}
{% endblock %}
</div>
</fieldset>
最后,我在../lib/python3.5/site-packages/mezza
nine/core/templates/includes/form_fields.html
找到了来源。这可能是{% if field.label %}<label class="control-label" for="{{
field.auto_id }}">{{ field.label }}</label>{% endif %}
{% load i18n %}
{% load mezzanine_tags %}
{% nevercache %}
<input type="hidden" name="referrer" value="{{
request.META.HTTP_REFERER }}">
{% csrf_token %}
{% endnevercache %}
{% for field in form_for_fields %}
{% if field.is_hidden %}
{{ field }}
{% else %}
<div class="form-group input_{{ field.id_for_label }} {{
field.field.type }}
{% if field.errors %} has-error{% endif %}">
{% if field.label %}<label class="control-label" for="{{
field.auto_id }}">{{ field.label }}</label>{% endif %}
{{ field }}
{% if field.errors %}
<p class="help-block">
{% for e in field.errors %}
{% if not forloop.first %} / {% endif %}{{ e }}
{% endfor %}
</p>
{% elif field.help_text %}
<p class="help-block">{{ field.help_text }}</p>
{% elif field.field.required %}
<p class="help-block">{% trans "required" %}</p>
{% endif %}
</div>
{% endif %}
{% endfor %}
{% endblock %}
但是在我要破解它之前,我运行命令python manage.py collectstatic
和python manage.py collecttemplates --noinput
来将夹层默认静态文件和模板文件收集到平面应用程序中。它返回了带有正确表单标签的默认夹层主题。
|-- __init__.py
|-- deploy
| |-- crontab.template
| |-- gunicorn.conf.py.template
| |-- local_settings.py.template
| |-- nginx.conf.template
| `-- supervisor.conf.template
|-- project
| |-- __init__.py
| |-- __pycache__
| |-- dev.db
| |-- local_settings.py
| |-- settings.py
| |-- urls.py
| `-- wsgi.py
|-- fabfile.py
|-- flat
| |-- __init__.py
| |-- admin.py
| |-- models.py
| |-- static
| |-- templates
| |-- tests.py
| `-- views.py
|-- gunicorn.conf.py
|-- manage.py
|-- requirements.txt
...
...
以下是settings.py
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": [
os.path.join(PROJECT_ROOT, "flat/templates"),
...
现在真的让我很困惑。我不知道从哪里开始。所以想请专家来帮助我。提前致谢。我非常感谢那些可以帮助我或给我一些解决方案的人。谢谢。
答案 0 :(得分:0)
我意识到这可能有点晚了-但是我对此主题有完全相同的问题,以下是解决方法:
假设您已经下载了主题并将其作为应用程序复制到您的项目中,或者运行了collecttemplates
,那么Mezzanine的fields_for
模板标签将使用templates/includes/form_fields.html
处的模板。就我而言,我将模板作为应用程序运行,因此它位于/flat/templates/includes/form_fields.html
模板的创建者已删除包含标签的行:
{% if field.label %}<label class="control-label" for="{{ field.auto_id }}">{{ field.label }}</label>{% endif %}
因此,如果您将该行添加回去,则会得到标签。