django - 我如何清理通过url传递的变量数据?
当我使用表单时,我使用Django表单清理字段数据,但是如何清除由URL传递的变量数据?django - 我如何清理通过url传递的变量数据?
比如我有一个这样的URL:http://mywebsite.com/tags/my-tag/其中我的标签是我要传递给一个函数在我的观点中的变量。 PY。
我试图使用Django表单来清理数据,但是我收到错误说“'TagForm'对象没有属性'cleaned_data'”。 我知道我的表格变量是达到标签函数在views.py因为我能够显示其内容在模板上,所以问题可能与我使用的形式。
views.py
def tags(request, my-tag):
tagform = TagForm(request.GET)
cleaned_dt = tagform.cleaned_data
form_tag = cleaned_dt['tag']
forms.py
class TagForm(forms.Form):
tag = forms.CharField()
任何想法?
在窗体上调用is_valid
方法后,将出现cleaned_data
字典属性。
def tags(request, my-tag):
tagform = TagForm(request.GET)
if tagform.is_valid():
cleaned_dt = tagform.cleaned_data
form_tag = cleaned_dt['tag']
return render(request, "may_template.html", {"form":tagform})
添加如果tagform。is_valid():解决了“TagForm”对象没有属性“cleared_data”的错误。现在我仍然需要弄清楚如何清理从url传递的变量。 – avatar
您正在创建一个带有请求对象的TagForm,但是您不会将TagForm的值设置为my-tag
,我可以在任何地方看到它。
URL的/my-tag/
部分不是请求参数。它是网址的一部分,并且可能传递到视图函数my-tag
(您可能希望将其重命名为my_tag
以使其更为Pythonic)。
编辑
您可以简单的创建一个字典对象初始化到表单对象,而不是request.GET中。 An example is here。
data = {'tag': my_tag,
'anotherIfNecessary': 'Hi there'}
tagform = TagForm(data)
基本上,使用的字典来填充表单对象必须包含表单字段名称映射到您想在设定它的价值。在这种情况下,你有一个表单字段名称为“标签”,并希望将其设置为my-tag
(你确定你没有在变量名称中使用破折号的语法错误吗?我确实... )。我纠正了我的例子。
实际上我需要的是一种清理从URL传递的变量数据的方法。如果有其他解决方案,您可以忽略我的示例。 – avatar