我想设置一个变量,其中包含我可以在我的页脚中使用的表单,该表单位于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>
答案 0 :(得分:1)
在模板中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',
....
],
},
}]