我正在学习Django,并尝试建立一个简单的表单HTML,表单字段可以通过POST方法发送。但是,如果我加载HTML页面,字段是不可见的
HTML页面为create.html
{% extends 'main/base.html' %}
{% block title %}
Create a task
{% endblock %}
{% block content %}
<h1>Create a task</h1>
<form method="post">
{% csrf_token %}
{{ form.title }}
{{ form.task }}
<button type="submit" class="btn btn-success">Add</button>
<span>{{ error }}</span>
</form>
{% endblock %}
<input type="text" placeholder="Enter name" class="form-control"><br>
<textarea placeholder="Enter description" class="form-control"></textarea><br>
我的forms.py文件如下所示:
from .models import Task
from django.forms import ModelForm, TextInput, Textarea
class TaskForm(ModelForm):
class Meta:
model = Task
fields = ["title", "task"]
widgets = {
"title": TextInput(attrs={
'class': 'form-control',
'placeholder': 'Enter name'
}),
"task": Textarea(attrs={
'class': 'form-control',
'placeholder': 'Enter description'
}),
}
views.py是这样的:
from django.shortcuts import render, redirect
from .models import Task
from .forms import TaskForm
def index(request):
tasks = Task.objects.order_by('id')
return render(request, 'main/index.html', {'title': 'Main page of this website', 'tasks': tasks})
def about(request):
return render(request, "main/about.html")
def create(request):
error = ''
if request.method == 'POST':
form = TaskForm(request.POST)
if form.is_valid():
form.save()
redirect('home')
else:
error = 'The form has incorrect values'
form = TaskForm()
context = {
'form': form,
'error': error
}
return render(request, "main/create.html")
在我看来
{{ form.title }}
以及
{{ form.task }}
工作不正常。但是,我不知道如何调整代码使它们可见。我浏览了类似的问题,怀疑这是因为GET请求没有在视图中定义,但我不知道如何修复它。
谢谢你的建议。
1条答案
按热度按时间u3r8eeie1#
@John Gordon在注解中提供了帮助,我没有将上下文传递到渲染调用中
修复了我的问题