【发布时间】:2017-07-31 20:58:45
【问题描述】:
我通过 HttpResponseRedirect 从其他地方调用我的“editFamily”视图:
return HttpResponseRedirect(reverse('editFamily', kwargs={'pk': family_id}))
对应的url模式如下:
url(r'^editFamily/(?P<pk>[0-9]+)/$', views.editFamily, name='editFamily')
最后是我的观点:
def editFamily(request, pk_):
obj = models.Family.objects.all().filter(pk=pk_)
if request.method == 'POST':
form = forms.FamilyForm(request.POST, instance=obj)
if form.is_valid():
form.save()
else:
form = forms.FamilyForm(instance=obj)
return render(request, 'editFamily.html', {'form': form})
它需要 pk_,最终进入 else 分支并为我的 edit-html 提供服务。但是在查看者提交关于参数 pk_ 的数据后会发生什么?当我来自 POST 时,pk_ 是否丢失?我是否必须以某种方式确保在我的模板中传递该参数?
【问题讨论】:
-
你为什么使用 pk_ ?请改用 pk。
-
因为 "filter(pk=pk)" ...对我来说看起来很奇怪,我想避免错误。
-
但您的变量应该与您在 urls.py 文件中使用的内容相匹配。您可以使用
url(r'^editFamily/(?P<id>[0-9]+)/$', views.editFamily, name='editFamily'),然后使用def editFamily(request,id): -
@user3182532: filter(pk=pk) 虽然是完全惯用的,但不会出错。
-
好的,那我就回去 pk=pk :)