有人可以告诉我如何使用基于类的视图处理表单提交和字段。 这是我的views.py
class ProfileView(FormView):
template_name='profile.html'
form_class = UnregisterMealForm
context={}
@method_decorator(login_required)
def form_valid(self, form):
return HttpResponse("You have succesfully unregistered for the meal")
def form_invalid(self, form):
return self.render_to_response(self.get_context_data(form=form))
def dispatch(self,*args, **kwargs ):
if self.request.user.is_active:
context = super(ProfileView, self).dispatch( self.request, *args, **kwargs)
return context
else:
return HttpResponseRedirect('%s?next=%s' % (settings.LOGIN_URL, self.request.path))
def get_context_data( self, **kwargs):
form=UnregisterMealForm(self.request.POST)
meals = ['breakfast','lunch','dinner']
context = {'meals' : meals , 'unregisterform': form}
if form.is_valid():
select_date = request.POST['select_date']
select_meal = request.POST['meal']
context['recent'] = "You have succesfully unregistered for "+ select_meal +" on " + select_date
return context
当我提交表单时,它会显示错误Attribute Error 'UnregisterMealForm' object has no attribute 'user'
这是我的UnregisterMealForm
class UnregisterMealForm(forms.Form):
MEALS = [('breakfast','breakfast'),('lunch','lunch'), ('dinner','dinner')]
select_date = forms.DateField(widget=DateInput())
meal = forms.CharField(widget=forms.Select(choices=MEALS, attrs={'class':'form-control', 'placehoder':'Choose the Meal' }))
任何人都可以帮助我。如果您需要更多信息,请告诉我。
提前致谢。 我是django的新手。
答案 0 :(得分:1)
您可以在form_valid方法中保存对象:
def form_valid(self, form):
model = YourModel()
model.select_date = form.cleaned_data['select_date']
model.select_meal = form.cleaned_data['meal']
model.save()
messages.success(request, "Your message here")