如何在Django表单中获取当前的网址?

时间:2018-10-16 06:55:09

标签: django django-forms django-urls

我想检查URL路径,以便可以基于它创建表单。在视图中,我们可以使用request参数来获取URL路径,是否有类似的方法可以在Forms.py中获取当前URL?

module 'self' has no attribute 'read_file'

1 个答案:

答案 0 :(得分:1)

您不能这样做。首次导入模块时,会在模块级别或类级别定义任何内容,因此不能依赖于URL。您唯一可以做的就是在实例化表单时传递一个参数,然后根据该参数更改选择。您可以使用字典来保存选择,以便表单可以从参数中选择相关的选择:

CHOICE_DICT = {
  'phone': (
    ('Samsung', 'Samsung'),
    ('iPhone', 'iPhone'),
  )
  'car': (
    ('Honda', 'Honda'),
    ('Toyota', 'Toyota'),
  )
}

class Productform(forms.ModelForm):
    brand=forms.ChoiceField(choices=brand_choises,widget=forms.Select(attrs={'class':'products'}))
    class Meta:
      model = Product

   def __init__(self, *args, **kwargs):
     form_type = kwargs.pop('form_type', None)
     super(ProductForm, self).__init__(*args, **kwargs)
     self.fields['brand'].choices = CHOICE_DICT[form_type]

,然后以您的形式执行form = Productform(form_type='car')或其他任何操作。不要忘记在POST和GET上都通过它。