将 URL 参数传递给表单值 Django



我正在尝试将表单输入的值设置为 url,然后使用 url 参数中的信息重定向到具有另一个表单的另一个页面,并将另一个输入的另一个值传递给 url。

假设我的网址是page1/value1/page2/value2

其中 value1 来自第二页的第一个表单,值 2 来自第二页的第二个表单。

使用此代码,我可以获取 url 中的第一个值,但不知何故,我无法将表单信息保存到数据库并在 url 中设置其他值。

class Acceso(FormView):
template_name = 'codigo_zona.html'
form_class = AccesoForm
def form_valid(self, form):
zona_code = form.cleaned_data.get('codigo_acceso')
return redirect('registro', zona_code)

class AccesoDetails(View):
def get(self, request, zona_code):
zona = Zona.objects.filter(codigo_acceso=zona_code).first()
if request.method == 'POST':
zona_id = zona.pk
range_start = 10 ** (6 - 1)
range_end = (10 ** 6) - 1
access_code = randint(range_start, range_end)
form = RegistroResidenteForm(request.POST)
if form.is_valid():
registro_residente = form.save(commit=False)
registro_residente.zona_residencial.pk = zona_id
registro_residente.codigo_acceso = access_code
registro_residente.status_activacion = False
registro_residente.save()
else:
form = RegistroResidenteForm()
context = {
'zona': zona,
'form': form
}
return render(request, 'registro_residentes.html', context)

我在提交第二个表单时收到错误Method not allowed (Post): HTTP/1.1 405 0,因此我从未在 url 中看到第二个值。

Django 通用视图(视图(是使用 get 方法,表单提交是 post 方法, 这就是为什么 django 引发错误,你可以使用 CreateView 或 FormView,你也可以使用基于函数的视图而不是使用基于类的视图

您在get方法中使用POST方法,请将方法名称更改为"post"。即使您不需要检查该方法。 这是正确的代码。

def post(self, request, zona_code):
zona = Zona.objects.filter(codigo_acceso=zona_code).first()
zona_id = zona.pk
range_start = 10 ** (6 - 1)
range_end = (10 ** 6) - 1
access_code = randint(range_start, range_end)
form = RegistroResidenteForm(request.POST)
if form.is_valid():
registro_residente = form.save(commit=False)
egistro_residente.zona_residencial.pk = zona_id
registro_residente.codigo_acceso = access_code
registro_residente.status_activacion = False
registro_residente.save()
else:
form = RegistroResidenteForm()
context = {
'zona': zona,
'form': form
}
return render(request, 'registro_residentes.html', context)

相关内容

  • 没有找到相关文章

最新更新