我想要设置一个变量,其中包含一个表单,我可以在我的页脚中使用它,它位于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>发布于 2016-01-19 17:58:46
在模板中,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',
....
],
},
}]https://stackoverflow.com/questions/34883482
复制相似问题