0

我有一个 django 应用程序,其中我有以下表格

class AddressForm(forms.Form):
  address = forms.CharField(required=False, widget=forms.TextInput(attrs={'size': 20}))
  city = forms.CharField(required=False, widget=forms.TextInput(attrs={'size': 15}))
  state = forms.ChoiceField(choices=settings.SITE_STATE_CHOICES)
  zipcode = USZipCodeField(required=False, widget=forms.TextInput(attrs={'size': 10}))

我的观点如下

def process_address(request):
    if request.method == 'POST':
        form = AddressForm(request.GET)
        if form.is_valid():
            ..........
            ..........
            ..........

当我处理上述视图时,request.GET 字典是{'city': 'Monroeville', 'state': 'PA', 'zipcode': '15146', 'address': '700 Beatty Rd #355'}

在这里,当我从页面的前端正常处理视图时,表单正在验证并返回True,但是当我使用celery(如我使用delaycelery 提供的方法)处理相同的视图时,表单没有验证并返回False

所以我真的很困惑为什么当我们在后台从 celery 处理表单时 django 无法验证表单,我所做的只是运行像process_address.delay(request).

我们需要为 celery 选项设置什么来验证表单吗?一样吗?

4

1 回答 1

0

您不能将请求对象传递给 celery 任务,因为它不接受对象作为参数。从您在任务中使用的请求中传递所需的值作为参数。那应该工作

于 2017-02-14T13:27:17.690 回答