python - 如何修复不返回 HttpResponse 对象的 Django 视图?(CS50 项目一)
问题描述
提交表单时收到以下错误。
ValueError at /edit_entry/hi/
The view encyclopedia.views.edit_entry didn't return an HttpResponse object. It returned None instead.
这是触发错误的views.py。
def edit_entry(request, title):
if request.method == "POST":
form = NewEditEntryForm(request.POST)
if form.is_valid():
title = form.cleaned_data["title"]
content = form.cleaned_data["content"]
util.save_entry(title, content)
return HttpResponseRedirect("/wiki/" + title)
else:
form = NewEditEntryForm()
return render(request, "encyclopedia/edit_entry.html",{
"form": NewEditEntryForm(),
"title": title,
"content": util.get_entry(title)
})
有什么问题,我该如何解决?
(我还需要帮助使用现有数据预填充表单。我尝试使用初始,但没有奏效。用现有数据预填充表单的最佳方法是什么?)
util.save_entry
def save_entry(title, content):
"""
Saves an encyclopedia entry, given its title and Markdown
content. If an existing entry with the same title already exists,
it is replaced.
"""
filename = f"entries/{title}.md"
if default_storage.exists(filename):
default_storage.delete(filename)
default_storage.save(filename, ContentFile(content))
解决方案
对不起,我以为你有模型。
# on util.py
def get_entry_content(title):
filename = f"entries/{title}.md"
return default_storage.open(filename).read()
# on views.py
def edit_entry(request, title):
if request.method == "POST":
form = NewEditEntryForm(request.POST)
if form.is_valid():
title = form.cleaned_data["title"]
content = form.cleaned_data["content"]
util.save_entry(title, content)
return HttpResponseRedirect("/wiki/" + instance.title)
else:
content = util.get_entry_content(title)
initial_dict = {
"title" : title,
"content" : content,
}
form = NewEditEntryForm(initial=initial_dict)
return render(request, "encyclopedia/edit_entry.html", {
"form": form,
})
好吧,我认为如果这不是您想要的,我会save_entry
在控制台中测试该功能,创建和更新以查看它是否有效。
推荐阅读
- c# - 保存 Html.DropDownList
- angular - 角度 - 在导航到另一条路线之前将 queryParams 传递给活动路线
- extjs - 需要帮助设置嵌套 JSON 的 hasMany 模型关系并在网格中显示数据 - EXTJS 6
- python - 如何平滑或重叠 pyplot.hist2d 中的 bin?
- jquery - 根据幻灯片类别更改文本的 jQuery 代码
- javascript - HTML 表单文本 onChange 事件刷新页面?
- ruby - 弃用 Ruby 中的旧模块名称?
- r - 在没有库的情况下在 R 中实现基本的禁忌搜索
- r - 硬币翻转的 3d 直方图导致 R
- ios - 将数据发送到另一个视图控制器