在每个页面上访问 CreateView 表单模式
Access to CreateView form modal on every page
我想知道,是否可以创建包含 CreateView
表单的模态,并在 django
中的每个页面、每个视图上都可以访问它?
到目前为止,我的 views.py
中有一个 CreateView
:
class ScenarioCreateView(CreateView):
model = Scenario
fields = ['title', 'area', 'author']
urls.py
path('scenario/new/', ScenarioCreateView.as_view(), name='scenario-create'),
and modal in base.html
(form is in scenario_form.html
):
<li><a class="modal-trigger" href="#modal1"><i class="material-icons">add</i></a></li>
<!-- Modal Structure -->
<div id="modal1" class="modal" method="post" action="/scenario/new/">
<div class="modal-content">
{% block new %}
{% endblock %}
</div>
<div class="modal-footer">
<a href="#!" class="modal-close waves-effect waves-green btn-flat">Agree</a>
</div>
</div>
当然,现在只能从 /scenario/new/
开始使用。
我应该更改 urls.py
中的路径,对吧?
你能帮帮我吗?
您似乎想在 所有 视图中 包含 您的 django 表单,以便您可以在每个 html模板。
为此,您可以注册自定义上下文处理器,并将表单作为上下文变量发送到所有模板。基本上,您只需要一个函数 return 一个将您的表单保存为值 (docs) 的字典:
from .forms import ScenarioForm # <-- change it based on your form name
def include_modal_context_processor(request):
return {'my_form': ScenarioForm(request.POST or None)}
(别忘了在settings.py
中注册)
并在模板 (base.html
) 中:
<li><a class="modal-trigger" href="#modal1"><i class="material-icons">add</i></a></li>
<!-- Modal Structure -->
<div id="modal1" class="modal" method="post" action="{% url 'scenario-create' %}">
<div class="modal-content">
{{ my_form }}
</div>
<div class="modal-footer">
<a href="#!" class="modal-close waves-effect waves-green btn-flat">Agree</a>
</div>
</div>
您可以使用 命名的 urls(而不是硬编码它们),如 {% url 'scenario-create' %}
中那样用于 action
。
我想知道,是否可以创建包含 CreateView
表单的模态,并在 django
中的每个页面、每个视图上都可以访问它?
到目前为止,我的 views.py
中有一个 CreateView
:
class ScenarioCreateView(CreateView):
model = Scenario
fields = ['title', 'area', 'author']
urls.py
path('scenario/new/', ScenarioCreateView.as_view(), name='scenario-create'),
and modal in base.html
(form is in scenario_form.html
):
<li><a class="modal-trigger" href="#modal1"><i class="material-icons">add</i></a></li>
<!-- Modal Structure -->
<div id="modal1" class="modal" method="post" action="/scenario/new/">
<div class="modal-content">
{% block new %}
{% endblock %}
</div>
<div class="modal-footer">
<a href="#!" class="modal-close waves-effect waves-green btn-flat">Agree</a>
</div>
</div>
当然,现在只能从 /scenario/new/
开始使用。
我应该更改 urls.py
中的路径,对吧?
你能帮帮我吗?
您似乎想在 所有 视图中 包含 您的 django 表单,以便您可以在每个 html模板。
为此,您可以注册自定义上下文处理器,并将表单作为上下文变量发送到所有模板。基本上,您只需要一个函数 return 一个将您的表单保存为值 (docs) 的字典:
from .forms import ScenarioForm # <-- change it based on your form name
def include_modal_context_processor(request):
return {'my_form': ScenarioForm(request.POST or None)}
(别忘了在settings.py
中注册)
并在模板 (base.html
) 中:
<li><a class="modal-trigger" href="#modal1"><i class="material-icons">add</i></a></li>
<!-- Modal Structure -->
<div id="modal1" class="modal" method="post" action="{% url 'scenario-create' %}">
<div class="modal-content">
{{ my_form }}
</div>
<div class="modal-footer">
<a href="#!" class="modal-close waves-effect waves-green btn-flat">Agree</a>
</div>
</div>
您可以使用 命名的 urls(而不是硬编码它们),如 {% url 'scenario-create' %}
中那样用于 action
。