Django 表单与模板
Django Forms vs Templates
抱歉给您带来不便,但我是 Django 的新手。我想象如果我使用 forms.py,Django 会为我创建表单,我不需要在模板上创建输入标签,所以我只创建了一个测试模板,因为我创建了 forms.py。但是,运行 我的代码告诉我我的视图没有 return HttpResponse 对象,我怀疑这是因为我的模板只有文本。你能帮我创建一个模板来让我的表格正常工作吗?我们可以使用上面发布的示例。我会把它贴在下面:
def create_post(request):
if request.method == 'POST':
form = CreatePostForm(request.POST)
if form.is_valid():
my_model = form.save()
return redirect('/posts/')
else:
form = CreatePostForm()
c = {'form' : form}
return render(request,'create_post.html',c)
你应该 return render()
而不是 HttpResponse
:
from django.shortcuts import render
def create_a_my_model(request):
...
return render(request, 'template.html', c)
template.html
可以很原始:
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button>Save</button>
</form>
另请注意,好的做法是在 post 请求后重定向到某个页面。这将防止双重提交。所以你的视图的整个代码将是:
from django.shortcuts import redirect, render
def create_a_my_model(request):
if request.method == 'POST':
form = MyModelForm(request.POST)
if form.is_valid():
my_model = form.save()
return redirect(my_model) # if the model has `get_absolute_url()`
else:
form = MyModelForm()
return render(request, 'template.html', {'form': form})
如果您的模型没有 get_absolute_url()
方法,您可以重定向到任何其他 url:return redirect('/success/page/')
抱歉给您带来不便,但我是 Django 的新手。我想象如果我使用 forms.py,Django 会为我创建表单,我不需要在模板上创建输入标签,所以我只创建了一个测试模板,因为我创建了 forms.py。但是,运行 我的代码告诉我我的视图没有 return HttpResponse 对象,我怀疑这是因为我的模板只有文本。你能帮我创建一个模板来让我的表格正常工作吗?我们可以使用上面发布的示例。我会把它贴在下面:
def create_post(request):
if request.method == 'POST':
form = CreatePostForm(request.POST)
if form.is_valid():
my_model = form.save()
return redirect('/posts/')
else:
form = CreatePostForm()
c = {'form' : form}
return render(request,'create_post.html',c)
你应该 return render()
而不是 HttpResponse
:
from django.shortcuts import render
def create_a_my_model(request):
...
return render(request, 'template.html', c)
template.html
可以很原始:
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button>Save</button>
</form>
另请注意,好的做法是在 post 请求后重定向到某个页面。这将防止双重提交。所以你的视图的整个代码将是:
from django.shortcuts import redirect, render
def create_a_my_model(request):
if request.method == 'POST':
form = MyModelForm(request.POST)
if form.is_valid():
my_model = form.save()
return redirect(my_model) # if the model has `get_absolute_url()`
else:
form = MyModelForm()
return render(request, 'template.html', {'form': form})
如果您的模型没有 get_absolute_url()
方法,您可以重定向到任何其他 url:return redirect('/success/page/')