Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django url参数作为表单默认值_Django - Fatal编程技术网

django url参数作为表单默认值

django url参数作为表单默认值,django,Django,我有一张搜索表 class PostSearchForm(forms.Form): keyword = forms.CharField(label=_('Search')) def __init__(self,*args,**kwargs): self.request = kwargs.pop('request', None) super(PostSearchForm,self).__init__(*args,**kwargs) r

我有一张搜索表

class PostSearchForm(forms.Form):
    keyword = forms.CharField(label=_('Search'))
    def __init__(self,*args,**kwargs):
        self.request = kwargs.pop('request', None)
        super(PostSearchForm,self).__init__(*args,**kwargs)
        raise Exception(self.request)    # This returns none
        categories = Category.objects.filter(status=True)
        self.fields['categories'] = forms.ModelChoiceField(queryset=categories, widget=forms.SelectMultiple(attrs={'class': 'some-class'}))
无论何时进行搜索,我都会生成一个表单,其默认值与他们搜索的值相同,因此我尝试的是在表单init中获取url参数并设置值,但由于某些错误,返回无。谁能告诉我哪里错了

更新的问题

views.py

def get(self,request,category,*args,**kwargs):
    search_form = PostSearchForm()
    return render(request,self.template_name,{'search_form':search_form})
模板

<form method="get" action="." id="searchForm">
{{ search_form.keyword }}     # When searched then the value should be searched term
{{ search_form.categories }}
</form>

在形式中,我需要将test显示为value

除非您将其传递到对象中,否则任何东西都无法进入对象。如果要在对象中发送请求,请传递它:

search_form = PostSearchForm(request=request)
然而,这对你毫无帮助,我不明白你为什么会这么想。如果要传递表单的初始数据,请执行以下操作:

search_form = PostSearchForm(initial={'categories': categories, 'keyword': keyword})

也许你应该显示一下你在哪里使用表单。你真的在传递请求吗?(虽然我看不出你为什么需要它;你没有使用它,而且你想做的事情就是把
首字母
传进去。)@DanielRoseman更新了问题,请检查一下。我不明白你希望这个怎么做。您显然没有将请求传递给表单,那么它应该如何进入该方法?@DanielRoseman那么我如何将请求传递给表单呢form@DanielRoseman用URL更新了问题,希望能让问题更清楚
search_form = PostSearchForm(initial={'categories': categories, 'keyword': keyword})