使用 Context_processors 导入表单
Importing Form using Context_processors
我想设置一个包含表单的变量,我可以在 base.html 中的页脚中使用该表单。我正在考虑使用 context_processor 创建一个变量,但经过几个小时的尝试我一定遗漏了一些东西我需要帮助。
views.py
from django.shortcuts import render
# Create your views here.
from .forms import SignUpForm
from .models import SignUp
def SignUp(request):
form = SignUpForm(request.POST or None)
context = {
"form": form
}
return render(request, "", context)
context_processor.py
from .forms import SignUp
def SignUpFormGlobal(request):
newsletter = SignUp()
return {
'signup': newsletter
}
base.html
<form method='POST' action=''>
{% csrf_token %}
{{ signup }}
<input class='btn btn-default' type='submit' value='Submit' />
</form>
在您的模板中 signup
是一个接受请求参数的函数(一个 Django 视图函数)。看起来您想要做的是将 signup
变量改为 Django 形式。
# context_processor.py
def SignUpFormGlobal(request):
return {
'signup_form': SignUpForm()
}
在您的模板中,表单应该正确显示
<form action="{% url 'sign-up-view' %}" method="POST">
{% csrf_token %}
{{ signup_form.as_p }}
<input class="btn btn-default" type="submit" value="Submit">
</form>
您还需要更新 TEMPLATE
设置以确保 context_processor 正在使用。
TEMPLATES = [{
....
'OPTIONS': {
'context_processors': [
'myproject.context_processors.SignUpFormGlobal',
....
],
},
}]
我想设置一个包含表单的变量,我可以在 base.html 中的页脚中使用该表单。我正在考虑使用 context_processor 创建一个变量,但经过几个小时的尝试我一定遗漏了一些东西我需要帮助。
views.py
from django.shortcuts import render
# Create your views here.
from .forms import SignUpForm
from .models import SignUp
def SignUp(request):
form = SignUpForm(request.POST or None)
context = {
"form": form
}
return render(request, "", context)
context_processor.py
from .forms import SignUp
def SignUpFormGlobal(request):
newsletter = SignUp()
return {
'signup': newsletter
}
base.html
<form method='POST' action=''>
{% csrf_token %}
{{ signup }}
<input class='btn btn-default' type='submit' value='Submit' />
</form>
在您的模板中 signup
是一个接受请求参数的函数(一个 Django 视图函数)。看起来您想要做的是将 signup
变量改为 Django 形式。
# context_processor.py
def SignUpFormGlobal(request):
return {
'signup_form': SignUpForm()
}
在您的模板中,表单应该正确显示
<form action="{% url 'sign-up-view' %}" method="POST">
{% csrf_token %}
{{ signup_form.as_p }}
<input class="btn btn-default" type="submit" value="Submit">
</form>
您还需要更新 TEMPLATE
设置以确保 context_processor 正在使用。
TEMPLATES = [{
....
'OPTIONS': {
'context_processors': [
'myproject.context_processors.SignUpFormGlobal',
....
],
},
}]